home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 6 / CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso / imagine / extras / tools / irj5 / sourcecode / irjmain2.s < prev   
Text File  |  1996-08-10  |  90KB  |  2,179 lines

  1. ;---------------------------------------------------------------------------------------------------
  2. ;---------------------------------------------------------------------------------------------------
  3. main2
  4. LAUNCH      movea.l     _AbsExecBase,a6
  5.             cmpi.w      #37,LIB_VERSION(a6)
  6.             bcc.s       LAUNCH.05                   ;GoodVersion
  7.             tst.l       WBreturnMsg
  8.             bne.s       LAUNCH.01
  9.             lea         dosname,a1                  ;Print an error message - the user doesn't have 2.0
  10.             jsr         _LVOOldOpenLibrary(a6)
  11.             move.l      d0,DOSlib
  12.             beq.s       LAUNCH.01                   ;Argh!
  13.             lea         BadKS,a3
  14.             bsr         IRJwritethis
  15.             movea.l     DOSlib,a1
  16.             jsr         _LVOCloseLibrary(a6)
  17. LAUNCH.01   move.l      #20,IRJexitcode
  18.             rts
  19. BadKS       dc.b        'Sorry, ImagineRequesterJester requires Kickstart 2.0!',$a,0,0
  20. ;-----------
  21. LAUNCH.05   clr.l       d0
  22.             lea         dosname,a1
  23.             jsr         _LVOOpenLibrary(a6)
  24.             move.l      d0,DOSlib
  25.             beq.s       LAUNCH.09                   ;couldn't open dos.library
  26.             clr.l       d0
  27.             lea         aslname,a1
  28.             jsr         _LVOOpenLibrary(a6)
  29.             move.l      d0,ASLlib
  30.             bne.s       LAUNCH.10
  31.             lea         NoASLlib,a3
  32.             bsr         IRJwritethis
  33.             movea.l     DOSlib,a1
  34.             jsr         _LVOCloseLibrary(a6)        ;close dos.library
  35. LAUNCH.09   move.l      #21,IRJexitcode             ;error - exit
  36.             rts
  37. NoASLlib    dc.b        'Error - asl.library not found!',$a,0
  38. ;-----------
  39. LAUNCH.10   bsr         ReadArgs                    ;READ CLI/WB ARGS
  40.             tst.l       d7
  41.             bpl         LAUNCH.15
  42.             lea         UsageError,a3
  43.             bsr         IRJwritethis
  44.             bsr         CloseLibs
  45.             move.l      #1,IRJexitcode              ;error - exit
  46.             rts
  47. UsageError  dc.b        'Usage:',$a,'       IRJ CONFIG/K,ID=IMAGINEDIR/K,IN=IMAGINENAME/K,'
  48.             dc.b        'IS=IMAGINESTACK/N,',$a,'            IP=IMAGINEPRIORITY/N,QUIT/S',$a,$a
  49.             dc.b        'About:',$a,'       IRJ was written by myself, Kirk Piepho, for '
  50.             dc.b        'Imagine by Impulse.',$a,'       IRJ is PD/shareware - if you '
  51.             dc.b        'use it regularly, send me $5 (boy am I',$a,'       gonna get rich!) '
  52.             dc.b        'to:',$a,$a,'        Kirk Piepho                 email welcome:',$a,'        '
  53.             dc.b        '2383 N. Dale #307            rexx@wavefront.com',$a,'        Roseville, MN '
  54.             dc.b        '55113',$a,'        USA',$a,$a,0,0
  55. ;---------------------------------------------------
  56. LAUNCH.15   movea.l     _AbsExecBase,a6
  57.             jsr         _LVOForbid(a6)
  58.             lea         portname,a1
  59.             jsr         _LVOFindPort(a6)            ;'HELLO?' . . . 
  60.             tst.l       d0
  61.             bne         LAUNCH.100                  ; . . . 'hi!'
  62.  
  63.             jsr         _LVOPermit(a6)              ;this is _FIRST_ invocation of IRJ
  64.             move.l      #IRJdata,TC_Userdata(a4)    ;this is used by next invocation to find signal of IRJ code already running & IRJ_DTS & IM_codebase & IM_a4
  65.             moveq       #-1,d0
  66.             jsr         _LVOAllocSignal(a6)
  67.             move.l      d0,IRJ_Signal
  68.             bpl.s       LAUNCH.20
  69.             bsr         FreeArgs
  70.             bsr         CloseLibs
  71.             move.l      #999,IRJexitcode            ;error - couldn't allocate signal!
  72.             rts
  73. ;-----------
  74. LAUNCH.20   bsr         PrepDirectoryTableStruct    ;* allocs _configdefault's, &:
  75.             move.l      d0,IRJ_DTS                  ; IRJ_OBJECTdir  IRJ_OBJECTfile   IRJ_PIXdir
  76.             bne.s       LAUNCH.25                   ; IRJ_DXFdir     IRJ_DXFfile      IRJ_ANIMdir
  77.             lea         MemoryError,a3              ; IRJ_FORMdir    IRJ_FORMfile
  78.             bsr         IRJwritethis                ; IRJ_CYCLEdir   IRJ_CYCLEfile    IRJ_tempdir
  79.             move.l      IRJ_Signal,d0               ; IRJ_SPLINEdir  IRJ_SPLINEfile
  80.             jsr         _LVOFreeSignal(a6)
  81.             bsr         FreeArgs
  82.             bsr         CloseLibs
  83.             move.l      #25,IRJexitcode             ;error - exit
  84.             rts
  85. MemoryError dc.b        'Error - out of memory!',$a,0
  86. ;-----------
  87. LAUNCH.25   move.l      IRJ_DTS,d5
  88.             move.l      #0,DTSconfigflag            ;flag new configdefaults as original
  89.             move.l      IRJconfig,d0
  90.             beq.s       LAUNCH.29
  91.             movea.l     d0,a1
  92.             bsr         CONFIG_read
  93.             tst.l       d7
  94.             beq         LAUNCH.30                   ;got it..
  95.             lea         UserConfigError,a3
  96.             bsr         IRJwritethis
  97. LAUNCH.29   lea         configname1,a1              ;'IRJ.cfg',0
  98.             bsr         CONFIG_read
  99.             tst.l       d7
  100.             beq         LAUNCH.30
  101.             lea         configname2,a1              ;'s:ImagineRequesterJester.cfg',0
  102.             bsr         CONFIG_read
  103.             tst.l       d7
  104.             beq.s       LAUNCH.30
  105.             bra.s       LAUNCH.30  ;couldn't open any config file to read...use hardwired ones
  106. UserConfigError dc.b    'Error - could not read your config file',$a,'trying defaults '
  107.             dc.b        'IRJ.cfg & s:ImagineRequesterJester.cfg',$a,0
  108. ;---------------------------------------------------
  109. LAUNCH.30   lea         IRJ_Port,a1                 ;'HEY, here i am!'
  110.             movea.l     _AbsExecBase,a6
  111.             jsr         _LVOAddPort(a6)             ;hey, i just thought of something, do i ever RemPort() this?
  112.  
  113.             bsr         FindImagine
  114.             tst.l       IRJ_ImagineTask
  115.             beq.s       LAUNCH.40
  116.  
  117.             bsr         PatchImagine                ;Imagine _is_ running already
  118.  
  119.             tst.l       IRJpriorityflag             ;IMAGINEPRIORITY=
  120.             beq.s       LAUNCH.35                   ;no priority change
  121.             move.l      IRJpriority,d0
  122.             movea.l     IRJ_ImagineTask,a1
  123.             jsr         _LVOSetTaskPri(a6)
  124.  
  125. LAUNCH.35   move.l      IRJ_Signal,d1
  126.             moveq       #0,d0
  127.             bset        d1,d0
  128.             jsr         _LVOWait(a6)                ;SLEEP - can also wait on signal sent by my own QUITTINGroutine - which is what it should do now
  129.             jsr         _LVOForbid(a6)
  130.             bra         LAUNCH.75
  131.  
  132. ;-----------
  133. LAUNCH.40   tst.l       IRJimaginename              ;Imagine _is not_ yet running, should I launch it?
  134.             beq         LAUNCH.65                   ; no, go wait for it on LVOOpen & on my own signal
  135.             move.l      IRJimaginedir,d1            ; yes, try running it
  136.             bne.s       LAUNCH.45
  137.             move.l      #nullstring,d1
  138. LAUNCH.45   move.l      #ACCESS_READ,d2
  139.             movea.l     DOSlib,a6
  140.             jsr         _LVOLock(a6)
  141.             move.l      d0,templock1                ;new dir
  142.             beq         LAUNCH.65                   ;error - couldn't change dirs, patch LVOOpen and wait
  143.             move.l      d0,d1
  144.             jsr         _LVOCurrentDir(a6)
  145.             move.l      d0,templock2                ;orig dir
  146.  
  147.             movea.l     _AbsExecBase,a6             ;patch LVOOpen to wait on Imagine we're about to run
  148.             jsr         _LVOForbid(a6)
  149.             movea.l     #-30,a0
  150.             movea.l     DOSlib,a1
  151.             move.l      #PatchImagine2,d0
  152.             jsr         _LVOSetFunction(a6)
  153.             move.l      d0,FailSafe_orig
  154.             jsr         _LVOPermit(a6)
  155.  
  156.             move.l      #IRJruncommandstring+4,a0
  157.             move.l      IRJimaginename,a3
  158. LAUNCH.60   move.b      (a3)+,d0
  159.             move.b      d0,(a0)+
  160.             bne.s       LAUNCH.60
  161.             move.l      #IRJruncommandstring,d1     ;'run '+IRJimaginename
  162.             move.l      #ImagineTags,d2
  163.             movea.l     DOSlib,a6
  164.             jsr         _LVOSystemTagList(a6)
  165.  
  166.             move.l      templock2,d1
  167.             jsr         _LVOCurrentDir(a6)
  168.             move.l      templock1,d1
  169.             jsr         _LVOUnLock(a6)
  170.  
  171.             bra.s       LAUNCH.70
  172. ;-----------
  173. LAUNCH.65   movea.l     _AbsExecBase,a6
  174.             jsr         _LVOForbid(a6)              ; no, lets wait for it on LVOOpen & on my own signal
  175.             movea.l     #-30,a0
  176.             movea.l     DOSlib,a1
  177.             move.l      #PatchImagine2,d0
  178.             jsr         _LVOSetFunction(a6)
  179.             move.l      d0,FailSafe_orig
  180.             jsr         _LVOPermit(a6)
  181.  
  182. LAUNCH.70   move.l      IRJ_Signal,d1
  183.             moveq       #0,d0
  184.             bset        d1,d0
  185.             movea.l     _AbsExecBase,a6
  186.             jsr         _LVOWait(a6)                ;SLEEP - can also wait on signal sent by my own QUITTINGroutine - which is what it should do now
  187.             jsr         _LVOForbid(a6)
  188.  
  189.             tst.l       IRJ_ImagineTask
  190.             bne.s       LAUNCH.75
  191.             movea.l     #-30,a0                     ;Imagine never patched, so unpatch LVOOpen
  192.             movea.l     DOSlib,a1
  193.             move.l      FailSafe_orig,d0
  194.             jsr         _LVOSetFunction(a6)
  195. ;-----------
  196. LAUNCH.75   bsr         UnPatchImagine
  197.             jsr         _LVOPermit(a6)
  198.             move.l      IRJ_Signal,d0               ;Free signal
  199.             jsr         _LVOFreeSignal(a6)
  200.             lea         IRJ_Port,a1                 ;gotta go
  201.             jsr         _LVORemPort(a6)
  202.             bsr         FreeDirectoryTableStuff
  203.             bsr         FreeArgs
  204.             bsr         CloseLibs
  205.             move.l      #0,IRJexitcode              ;That's all folks....
  206.             rts
  207. ;---------------------------------------------------
  208. LAUNCH.100  movea.l     d0,a1                       ;IRJ is _already_ running, update it or signal it to quit
  209.             movea.l     MP_SIGTASK(a1),a1
  210.             movea.l     TC_Userdata(a1),a0          ;IRJdata
  211.             move.l      4(a0),d2                    ;IRJ_signal
  212.             move.l      8(a0),d5                    ;IRJ_DTS
  213.             move.l      12(a0),d3                   ;IRJ_ImagineCodeBase
  214.             move.l      20(a0),IRJ_ImagineTask      ;IRJ_ImagineTask
  215.             jsr         _LVOPermit(a6)
  216.  
  217.             tst.l       IRJquitflag                 ;QUIT=true, skip other args.
  218.             bne         LAUNCH.145
  219.  
  220.             tst.l       IRJconfig                   ;CONFIG=
  221.             beq.s       LAUNCH.115                  ;no config arg
  222.             tst.l       IRJ_ImagineTask             ;Is Imagine running?
  223.             bne.s       LAUNCH.105
  224.             move.l      #0,DTSconfigflag            ; no - update configdefaults of IRJ
  225.             bra.s       LAUNCH.110
  226. LAUNCH.105  move.l      #1,DTSconfigflag            ; yes - flag new configdefaults as updated
  227. LAUNCH.110  movea.l     IRJconfig,a1
  228.             bsr         CONFIG_read
  229.             tst.l       d7
  230.             beq.s       LAUNCH.115
  231.             lea         UserConfigError2,a3
  232.             bsr         IRJwritethis
  233.             bsr         FreeArgs
  234.             bsr         CloseLibs
  235.             move.l      #432,IRJexitcode
  236.             rts
  237. UserConfigError2 dc.b   'Error - could not find/read your config file',$a,0
  238. ;-----------
  239. LAUNCH.115  tst.l       IRJ_ImagineTask
  240.             beq.s       LAUNCH.120
  241.  
  242.             tst.l       IRJpriorityflag             ;Imagine _is_ running
  243.             beq         LAUNCH.150
  244.             move.l      IRJpriority,d0              ;IMAGINEPRIORITY=
  245.             movea.l     IRJ_ImagineTask,a1
  246.             jsr         _LVOSetTaskPri(a6)
  247.             bra         LAUNCH.150
  248. ;-----------
  249. LAUNCH.120  tst.l       IRJimaginename              ;Imagine _is not_ yet running, should I launch it?
  250.             beq         LAUNCH.150                  ; no
  251.  
  252.             move.l      IRJimaginedir,d1            ; yes, try running it
  253.             bne.s       LAUNCH.125
  254.             move.l      #nullstring,d1
  255. LAUNCH.125  move.l      #ACCESS_READ,d2
  256.             movea.l     DOSlib,a6
  257.             jsr         _LVOLock(a6)
  258.             move.l      d0,templock1                ;new dir
  259.             beq.s       LAUNCH.150                  ;error - couldn't change dirs, done
  260.             move.l      d0,d1
  261.             jsr         _LVOCurrentDir(a6)
  262.             move.l      d0,templock2                ;orig dir
  263.  
  264.             move.l      #IRJruncommandstring+4,a0
  265.             move.l      IRJimaginename,a3
  266. LAUNCH.140  move.b      (a3)+,d0
  267.             move.b      d0,(a0)+
  268.             bne.s       LAUNCH.140
  269.             move.l      #IRJruncommandstring,d1     ;'run '+IRJimaginename
  270.             move.l      #ImagineTags,d2
  271.             jsr         _LVOSystemTagList(a6)
  272.  
  273.             move.l      templock2,d1
  274.             jsr         _LVOCurrentDir(a6)
  275.             move.l      templock1,d1
  276.             jsr         _LVOUnLock(a6)
  277.             bra.s       LAUNCH.150
  278. ;-----------
  279. LAUNCH.145  moveq       #0,d0                       ;signal orig IRJ task to QUIT
  280.             bset        d2,d0
  281.             jsr         _LVOSignal(a6)
  282.  
  283.             lea         QuittingMsg,a3
  284.             bsr         IRJwritethis
  285.  
  286. LAUNCH.150  bsr         FreeArgs
  287.             bsr         CloseLibs
  288.             move.l      #0,IRJexitcode              ;success, IRJ updated
  289.             rts
  290. QuittingMsg dc.b        'Quitting the fabulous Imagine Requester Jester!',$a,0,0
  291. ;---------------------------------------------------------------------------------------------------
  292. QUITTING_IMAGINE ;signal my task that user wants to quit
  293.             movem.l     d2-d7/a2-a6,-(sp)
  294.             movea.l     _AbsExecBase,a6
  295.             jsr         _LVOForbid(a6)
  296.             lea         portname,a1
  297.             jsr         _LVOFindPort(a6)            ;'where are you?'
  298.             movea.l     d0,a1                       ;IRJ is already running, update it or signal it to quit
  299.             movea.l     MP_SIGTASK(a1),a1
  300.             movea.l     TC_Userdata(a1),a0          ;IRJdata
  301.             move.l      4(a0),d1                    ;IRJ_signal
  302.             jsr         _LVOPermit(a6)
  303.  
  304.             moveq       #0,d0
  305.             bset        d1,d0
  306.             jsr         _LVOSignal(a6)              ;tell task to quit
  307.             movem.l     (sp)+,d2-d7/a2-a6
  308.             clr.l       -(sp)
  309. QUITTING_dothisfirst
  310.             nop                                     ;this will get written over
  311.             nop
  312.             nop
  313.             rts
  314. ;---------------------------------------------------------------------------------------------------
  315. ;---------------------------------------------------------------------------------------------------
  316. FindImagine
  317.             clr.l       d0                          ;ok, now look for/wait for/start imagine
  318.             lea         intuitionname,a1            ;try finding a window of screen titled 'Imagine...'
  319.             movea.l     _AbsExecBase,a6
  320.             jsr         _LVOOpenLibrary(a6)
  321.             move.l      d0,Intuilib
  322.             movea.l     d0,a6
  323.             clr.l       d0
  324.             jsr         _LVOLockIBase(a6)
  325.             movea.l     d0,a2                       ;save it
  326.             movea.l     ib_FirstScreen(a6),a0
  327. FI.05       movea.l     sc_Title(a0),a1
  328.             cmpi.l      #'Imag',(a1)
  329.             bne.s       FI.10                       ;nope
  330.             cmpi.w      #'in',4(a1)
  331.             beq.s       FI.15                       ;good enuf
  332. FI.10       tst.l       sc_NextScreen(a0)
  333.             beq         FI.45                       ;done searching, no match
  334.             move.l      sc_NextScreen(a0),a0
  335.             bra.s       FI.05
  336.  
  337. FI.15       movea.l     sc_FirstWindow(a0),a0       ;screen title - 'Imagin.....'
  338.             movea.l     wd_UserPort(a0),a0
  339.             movea.l     MP_SIGTASK(a0),a1
  340.             move.l      a1,-(sp)                    ;waiting on IRJ_ImagineTask when ready, so fill it last
  341.  
  342.             move.l      pr_CLI(a1),d0
  343.             beq.s       FI.20
  344.             asl.l       #2,d0                       ;Imagine from CLI
  345.             movea.l     d0,a1
  346.             move.l      cli_Module(a1),d0
  347.             bra.s       FI.25
  348. FI.20       move.l      pr_SegList(a1),d0           ;Imagine from WB
  349.             asl.l       #2,d0
  350.             movea.l     d0,a0
  351.             move.l      12(a0),d0
  352.  
  353. FI.25       asl.l       #2,d0
  354.             movea.l     d0,a0
  355. FI.30       move.l      -4(a0),d1                   ;hunk size
  356.             cmpi.l      #$b8000,d1
  357.             bgt.s       FI.35
  358.             move.l      (a0),d1
  359.             beq         FI.99                       ;done - no find code hunk
  360.             asl.l       #2,d1
  361.             movea.l     d1,a0
  362.             bra.s       FI.30
  363.  
  364. FI.35       adda.w      #4,a0
  365.             movea.l     a0,a1                       ;IRJ_ImagineCodeBase
  366.             adda.l      d1,a0
  367.             suba.w      #8,a0
  368.             move.l      a0,IRJ_ImagineCodeEnd
  369.  
  370.             cmpi.l      #$bb000,d1
  371.             blt.s       FI_3                        ;3.0
  372.             cmpi.l      #$e6000,d1
  373.             blt.s       FI_4                        ;4.0
  374.             bra         FI_5                        ;5.0
  375. ;---------------------------------------------------
  376. FI_3        move.l      #3,IRJ_ImagineVersion
  377.             movea.l     d0,a0
  378. FI_3.05     move.l      -4(a0),d1
  379.             cmpi.l      #$7000,d1
  380.             bgt.s       FI_3.10
  381. FI_3.07     move.l      (a0),d1
  382.             beq         FI.40                       ;done
  383.             asl.l       #2,d1
  384.             movea.l     d1,a0
  385.             bra.s       FI_3.05
  386. FI_3.10     cmpi.l      #$9000,d1
  387.             bgt.s       FI_3.15
  388.             move.l      a0,IRJ_ImagineA4Base
  389.             bra.s       FI_3.07
  390. FI_3.15     cmpi.l      #$a000,d1
  391.             bgt         FI_3.07
  392.             move.l      a0,IRJ_ImaginePPTHhunk
  393.             bra.s       FI_3.07
  394. ;-----------
  395. FI_4        move.l      #4,IRJ_ImagineVersion
  396.             movea.l     d0,a0
  397. FI_4.05     move.l      -4(a0),d1
  398.             cmpi.l      #$6800,d1
  399.             bgt.s       FI_4.10
  400. FI_4.07     move.l      (a0),d1
  401.             beq         FI.40                       ;done
  402.             asl.l       #2,d1
  403.             movea.l     d1,a0
  404.             bra.s       FI_4.05
  405. FI_4.10     cmpi.l      #$9000,d1
  406.             bgt.s       FI_4.15
  407.             move.l      a0,IRJ_ImagineA4Base
  408.             bra.s       FI_4.07
  409. FI_4.15     cmpi.l      #$f000,d1
  410.             bgt.s       FI_4.07
  411.             move.l      a0,IRJ_ImaginePPTHhunk
  412.             bra.s       FI_4.07
  413. ;-----------
  414. FI_5        move.l      #5,IRJ_ImagineVersion
  415.             movea.l     d0,a0
  416. FI_5.05     move.l      -4(a0),d1
  417.             cmpi.l      #$6a00,d1
  418.             bgt.s       FI_5.10
  419. FI_5.07     move.l      (a0),d1
  420.             beq         FI.40                       ;done
  421.             asl.l       #2,d1
  422.             movea.l     d1,a0
  423.             bra.s       FI_5.05
  424. FI_5.10     cmpi.l      #$9000,d1
  425.             bgt.s       FI_5.15
  426.             move.l      a0,IRJ_ImagineA4Base
  427.             bra.s       FI_5.07
  428. FI_5.15     cmpi.l      #$a0000,d1
  429.             bgt.s       FI_5.07
  430.             cmpi.l      #$ca00,d1
  431.             blt.s       FI_5.07
  432.             move.l      a0,IRJ_ImaginePPTHhunk
  433.             bra.s       FI_5.07
  434. ;-----------
  435. FI.99       move.l      (sp)+,d0
  436.             bra.s       FI.45
  437. ;---------------------------------------------------
  438. FI.40       move.l      a1,IRJ_ImagineCodeBase
  439.             addi.l      #4,IRJ_ImagineA4Base
  440.             addi.l      #4,IRJ_ImaginePPTHhunk
  441.             move.l      (sp)+,IRJ_ImagineTask
  442.  
  443. FI.45       movea.l     a2,a0
  444.             jsr         _LVOUnlockIBase(a6)
  445.             movea.l     Intuilib,a1
  446.             movea.l     _AbsExecBase,a6
  447.             jsr         _LVOCloseLibrary(a6)
  448.             rts
  449. ;---------------------------------------------------------------------------------------------------
  450. ;---------------------------------------------------------------------------------------------------
  451. PatchImagine2
  452.             movea.l     d1,a0
  453.             cmpi.b      #$00,14(a0)                 ;,0
  454.             bne         notamatch
  455.             cmpi.l      #$496d6167,(a0)             ;'Imag'
  456.             bne         notamatch
  457.             cmpi.l      #$696e652e,4(a0)            ;'ine.'
  458.             bne         notamatch
  459.             cmpi.l      #$636f6e66,8(a0)            ;'conf'
  460.             bne         notamatch
  461.             cmpi.w      #$6967,12(a0)               ;'ig'
  462.             bne         notamatch
  463.  
  464.             movea.l     #-30,a0
  465.             movea.l     DOSlib,a1
  466.             movem.l     d0-d1/a6,-(sp)
  467.             move.l      FailSafe_orig,d0
  468.             movea.l     _AbsExecBase,a6
  469.             jsr         _LVOSetFunction(a6)
  470.  
  471.             suba.l      a1,a1
  472.             jsr         _LVOFindTask(a6)
  473.             movea.l     d0,a1
  474.             move.l      a1,-(sp)                    ;waiting on IRJ_ImagineTask when ready, so fill it last
  475.  
  476.             move.l      pr_CLI(a1),d0
  477.             beq.s       PI2.20
  478.             asl.l       #2,d0                       ;Imagine from CLI
  479.             movea.l     d0,a1
  480.             move.l      cli_Module(a1),d0
  481.             bra.s       PI2.25
  482. PI2.20      move.l      pr_SegList(a1),d0           ;Imagine from WB
  483.             asl.l       #2,d0
  484.             movea.l     d0,a0
  485.             move.l      12(a0),d0
  486.  
  487. PI2.25      asl.l       #2,d0
  488.             movea.l     d0,a0
  489. PI2.30      move.l      -4(a0),d1                   ;hunk size
  490.             cmpi.l      #$b8000,d1
  491.             bgt.s       PI2.35
  492.             move.l      (a0),d1
  493.             beq         PI2.99                      ;done - no find code hunk
  494.             asl.l       #2,d1
  495.             movea.l     d1,a0
  496.             bra.s       PI2.30
  497.  
  498. PI2.35      adda.w      #4,a0
  499.             movea.l     a0,a1                       ;IRJ_ImagineCodeBase
  500.             adda.l      d1,a0
  501.             suba.w      #8,a0
  502.             move.l      a0,IRJ_ImagineCodeEnd
  503.  
  504.             cmpi.l      #$bb000,d1
  505.             blt.s       PI2_3                       ;3.0
  506.             cmpi.l      #$e6000,d1
  507.             blt.s       PI2_4                       ;4.0
  508.             bra         PI2_5                       ;5.0
  509. ;---------------------------------------------------
  510. PI2_3       move.l      #3,IRJ_ImagineVersion
  511.             movea.l     d0,a0
  512. PI2_3.05    move.l      -4(a0),d1
  513.             cmpi.l      #$7000,d1
  514.             bgt.s       PI2_3.10
  515. PI2_3.07    move.l      (a0),d1
  516.             beq         PI2.40                      ;done
  517.             asl.l       #2,d1
  518.             movea.l     d1,a0
  519.             bra.s       PI2_3.05
  520. PI2_3.10    cmpi.l      #$9000,d1
  521.             bgt.s       PI2_3.15
  522.             move.l      a0,IRJ_ImagineA4Base
  523.             bra.s       PI2_3.07
  524. PI2_3.15    cmpi.l      #$a000,d1
  525.             bgt         PI2_3.07
  526.             move.l      a0,IRJ_ImaginePPTHhunk
  527.             bra.s       PI2_3.07
  528. ;-----------
  529. PI2_4       move.l      #4,IRJ_ImagineVersion
  530.             movea.l     d0,a0
  531. PI2_4.05    move.l      -4(a0),d1
  532.             cmpi.l      #$6800,d1
  533.             bgt.s       PI2_4.10
  534. PI2_4.07    move.l      (a0),d1
  535.             beq         PI2.40                      ;done
  536.             asl.l       #2,d1
  537.             movea.l     d1,a0
  538.             bra.s       PI2_4.05
  539. PI2_4.10    cmpi.l      #$9000,d1
  540.             bgt.s       PI2_4.15
  541.             move.l      a0,IRJ_ImagineA4Base
  542.             bra.s       PI2_4.07
  543. PI2_4.15    cmpi.l      #$f000,d1
  544.             bgt.s       PI2_4.07
  545.             move.l      a0,IRJ_ImaginePPTHhunk
  546.             bra.s       PI2_4.07
  547. ;-----------
  548. PI2_5       move.l      #5,IRJ_ImagineVersion
  549.             movea.l     d0,a0
  550. PI2_5.05    move.l      -4(a0),d1
  551.             cmpi.l      #$6a00,d1
  552.             bgt.s       PI2_5.10
  553. PI2_5.07    move.l      (a0),d1
  554.             beq         PI2.40                      ;done
  555.             asl.l       #2,d1
  556.             movea.l     d1,a0
  557.             bra.s       PI2_5.05
  558. PI2_5.10    cmpi.l      #$9000,d1
  559.             bgt.s       PI2_5.15
  560.             move.l      a0,IRJ_ImagineA4Base
  561.             bra.s       PI2_5.07
  562. PI2_5.15    cmpi.l      #$a0000,d1
  563.             bgt.s       PI2_5.07
  564.             cmpi.l      #$ca00,d1
  565.             blt.s       PI2_5.07
  566.             move.l      a0,IRJ_ImaginePPTHhunk
  567.             bra.s       PI2_5.07
  568. ;-----------
  569. PI2.99      move.l      (sp)+,d0
  570.             movem.l     (sp)+,d0-d1/a6
  571.             bra.s       notamatch
  572. ;---------------------------------------------------
  573. PI2.40      move.l      a1,IRJ_ImagineCodeBase
  574.             addi.l      #4,IRJ_ImagineA4Base
  575.             addi.l      #4,IRJ_ImaginePPTHhunk
  576.             move.l      (sp)+,IRJ_ImagineTask
  577.  
  578.             bsr         PatchImagine
  579.  
  580.             movem.l     (sp)+,d0-d1/a6
  581. notamatch:
  582.             dc.w        $4ef9                       ;JMP
  583. FailSafe_orig:
  584.             dc.l        FailSafe
  585. FailSafe    move.l      #0,d0                       ;this will be patched to go to origional LVOOpen
  586.             nop
  587.             rts
  588. ;---------------------------------------------------------------------------------------------------
  589. ;---------------------------------------------------------------------------------------------------
  590. PatchImagine
  591.             tst.l       IRJ_ImagineTask
  592.             beq         PI.99
  593. ;-----------
  594.             movea.l     IRJ_ImaginePPTHhunk,a0
  595. PI.05       cmpi.l      #'PPTH',(a0)
  596.             beq.s       PI.06
  597.             adda.w      #1,a0
  598.             bra.s       PI.05
  599. PI.06       move.l      a0,d0
  600.             movea.l     IRJ_ImagineCodeBase,a0
  601. PI.07       cmp.l       (a0),d0
  602.             beq.s       PI.09
  603. PI.08       adda.w      #1,a0
  604.             bra.s       PI.07
  605. PI.09       cmpi.w      #$4879,-2(a0)               ;PEA
  606.             bne.s       PI.08
  607.  
  608.             move.w      20(a0),d0
  609.             move.w      d0,IM_RENDER40
  610.             add.w       d0,IM_RENDER
  611.             add.w       d0,IM_FILEformat
  612.             add.w       d0,IM_WIDTH
  613.             add.w       d0,IM_HEIGHT
  614.             add.w       d0,IM_XASPECT
  615.             add.w       d0,IM_YASPECT
  616.             add.w       d0,IM_VIEWmode
  617.             add.w       d0,IM_SUBPROJECTpixdir
  618.             add.w       d0,IM_SUBPROJECTanimdir
  619. ;-----------
  620.             movea.l     IRJ_ImagineCodeBase,a0
  621.             movea.l     IRJ_ImagineCodeEnd,a1
  622. PI.10       cmpi.l      #'Part',(a0)
  623.             beq.s       PI.12
  624. PI.11       adda.w      #1,a0
  625.             cmpa        a0,a1
  626.             bne.s       PI.10
  627.             bra         PI.99                       ;couldn't find 'Particle Filename'
  628. PI.12       cmpi.l      #' Fil',8(a0)
  629.             bne.s       PI.11
  630.  
  631.             suba.w      #10,a0
  632.             movea.l     (a0),a1
  633.             clr.l       d0
  634.             move.w      -8(a0),d0
  635.             subi.w      #$6c,d0
  636.             move.w      d0,IM_PROJECTdir
  637.             add.w       d0,IM_PROJECTfile
  638.             add.w       d0,IM_PROJECToutput
  639.             addi.w      #12,d0
  640.             move.w      d0,IM_OBJECTdir
  641.             add.w       d0,IM_OBJECTfile
  642.             add.w       d0,IM_OBJECToutput
  643.             addi.w      #12,d0
  644.             move.w      d0,IM_CONVERTIFFdir
  645.             add.w       d0,IM_CONVERTIFFfile
  646.             add.w       d0,IM_CONVERTIFFoutput
  647.             addi.w      #12,d0
  648.             move.w      d0,IM_BRUSHMAPSdir
  649.             add.w       d0,IM_BRUSHMAPSfile
  650.             add.w       d0,IM_BRUSHMAPSoutput
  651.             addi.w      #12,d0
  652.             move.w      d0,IM_TEXTURESdir
  653.             add.w       d0,IM_TEXTURESfile
  654.             add.w       d0,IM_TEXTURESoutput
  655.             addi.w      #12,d0
  656.             move.w      d0,IM_EFFECTSdir
  657.             add.w       d0,IM_EFFECTSfile
  658.             add.w       d0,IM_EFFECTSoutput
  659.             addi.w      #12,d0
  660.             move.w      d0,IM_SUBPROJECTdir
  661.             add.w       d0,IM_SUBPROJECTfile
  662.             add.w       d0,IM_SUBPROJECToutput
  663.             addi.w      #12,d0
  664.             move.w      d0,IM_PREFSdir
  665.             add.w       d0,IM_PREFSfile
  666.             add.w       d0,IM_PREFSoutput
  667.             addi.w      #12,d0
  668.             move.w      d0,IM_ATTRIBSdir
  669.             add.w       d0,IM_ATTRIBSfile
  670.             add.w       d0,IM_ATTRIBSoutput
  671.             addi.w      #12,d0
  672.             move.w      d0,IM_PARTICALSdir
  673.             add.w       d0,IM_PARTICALSfile
  674.             add.w       d0,IM_PARTICALSoutput
  675.             addi.w      #24,d0
  676.             move.w      d0,IM_PALETTEdir
  677.             add.w       d0,IM_PALETTEfile
  678.             add.w       d0,IM_PALETTEoutput
  679.             addi.w      #12,d0
  680.             move.w      d0,IM_BROWSEdir
  681.             add.w       d0,IM_BROWSEfile
  682.             add.w       d0,IM_BROWSEoutput
  683.             addi.w      #12,d0
  684.             move.w      d0,IM_REXXdir
  685.             add.w       d0,IM_REXXfile
  686.             add.w       d0,IM_REXXoutput
  687.  
  688.             cmpi.l      #5,IRJ_ImagineVersion
  689.             beq.s       PI.14
  690.             cmpi.l      #4,IRJ_ImagineVersion
  691.             beq.s       PI.13
  692.             move.w      #0,IM_RENDER40
  693. PI.13       move.w      #0,IM_REXXdir
  694.             move.w      #0,IM_REXXfile
  695.             move.w      #0,IM_REXXoutput
  696.  
  697. PI.14       adda.w      #1,a1
  698.             cmpi.w      #$4eb9,(a1)
  699.             bne.s       PI.14
  700.             move.l      2(a1),IRJrequester_orig
  701.             move.l      #IRJrequester,2(a1)         ;gotta unpatch this
  702.             move.l      a1,IRJtemp_1                ; when we quit
  703. ;-----------
  704.             movea.l     IRJ_ImagineCodeBase,a0
  705.             adda.l      #$88000,a0
  706.             movea.l     IRJ_ImagineCodeEnd,a1
  707. PI.20       cmpi.l      #$43ef0010,(a0)             ;LEA $10(A7),A1
  708.             beq.s       PI.21
  709.             adda.w      #1,a0                       ;     lea     $10(A7),A1
  710.             cmpa        a0,a1                       ;     move.b  (A0)+,(A1)+
  711.             bne.s       PI.20                       ;     bne.b   *-$02
  712.             bra         PI.99                       ;4d6  pea     *-$127a   ;'/objects',0,0   $487aed84      /  pea       -$127C(PC)  ;'/objects',0,0
  713. PI.21       adda.w      #$1c,a0                     ;  a  pea     $14(a7)                     $486f0014      /  pea       $14(A7)
  714.             move.l      a0,IRJtemp_2                ;  e  jsr     $0b97e8                     $4eb900620050  /  jsr       $0B97E8
  715.                                                     ; e4  addq.w  #8,a7                       $504f          /  addq.w  #8,A7
  716.             move.w      #$4eb9,(a0)       ;jsr      ;  6  lea     $10(a7),a0                  $41ef0010      /  lea       $10(A7),A0
  717.             move.l      2(a0),IRJtemp_3
  718.             move.l      #CREATEDIRS,2(a0)           ;** a  move.l  a0,d1       JSR CREATEDIRS  $2208          /  move.l  A0,D1
  719.             move.w      6(a0),IRJtemp_4
  720.  
  721.             move.w      #$4e71,6(a0)      ;nop      ;  c  jsr     -$78(a6)    **************  $4eaeff88      /  jsr       _LVOCreateDir(a6)
  722.             move.l      16(a0),IRJtemp_5
  723.             move.l      #$4e714e71,16(a0) ;nop nop  ; f0  move.l  d0,d7       NOP             $2e00          /  move.l  D0,D7
  724.                                                     ;  2  tst.l   d7                          $4a87          /  tst.l   D7
  725.                                                     ;  4  beq     *+$fc                       $670000fa      /  beq.w   *+$FC
  726.                                                     ;  8  move.l  d7,d1                       $2207          /  move.l  D7,D1
  727.                                                     ;  a  jsr     -$5a(a6)    NOP NOP         $4eaeffa6      /  jsr       _LVOUnlock(a6)
  728. ;-----------
  729.             movea.l     IRJ_ImagineCodeBase,a0
  730.             adda.l      #$8f000,a0
  731.             movea.l     IRJ_ImagineCodeEnd,a1
  732. PI.25       cmpi.l      #$12d866fc,(a0)             ;MOVE.B (A0)+,(A1)+
  733.             beq.s       PI.27
  734. PI.26       adda.w      #1,a0
  735.             cmpa        a0,a1
  736.             bne.s       PI.25
  737.             bra         PI.99
  738. PI.27       cmpi.l      #$12d866fc,12(a0)           ;MOVE.B (A0)+,(A1)+
  739.             bne.s       PI.26
  740.             move.l      a0,IRJtemp_6      ;disable copying over my init SUBPROJECT pix/anim dirs
  741.             move.l      #$4e714e71,(a0)   ;was $12d866fc
  742.             move.l      #$4e714e71,12(a0) ;was $12d866fc
  743. ;-----------
  744.             movea.l     IRJ_ImagineCodeBase,a0
  745.             movea.l     IRJ_ImagineCodeEnd,a1
  746. PI.30       cmpi.l      #'No p',(a0)
  747.             beq.s       PI.31
  748.             adda.w      #1,a0
  749.             cmpa        a0,a1
  750.             bne.s       PI.30
  751. PI.31       suba.w      #1,a0
  752.             cmpi.l      #$42a761ff,(a0)
  753.             bne.s       PI.31
  754.             move.l      a0,IRJtemp_7                 ;clr.l -(a7)
  755.             move.w      (a0),IRJtemp_8
  756.             move.w      #$4eb9,(a0)
  757.             move.l      2(a0),IRJtemp_9
  758.             move.l      #QUITTING_IMAGINE,2(a0)
  759.             move.w      6(a0),IRJtemp_10
  760.             move.w      #$4e71,6(a0)
  761.  
  762. PI.32       adda.w      #1,a0
  763.             cmpi.l      #$48e70316,(a0)             ;movem.l d6-d7/a3/a5-a6,-(a7)
  764.             bne.s       PI.32
  765.             move.l      a0,QUITTING_dothisfirst+2
  766.             move.w      #$4eb9,QUITTING_dothisfirst
  767. ;-----------
  768. PI.99       rts                                     ;UNKNOWN or not loaded
  769. ;---------------------------------------------------------------------------------------------------
  770. ;---------------------------------------------------------------------------------------------------
  771. UnPatchImagine
  772.             tst.l       IRJ_ImagineTask
  773.             beq.s       UPI.99
  774.             tst.l       IRJ_ImagineCodeBase
  775.             beq.s       UPI.99
  776.  
  777.             move.l      IRJtemp_1,a1
  778.             move.l      IRJrequester_orig,2(a1)
  779.  
  780.             move.l      IRJtemp_2,a0
  781.             move.w      #$2208,(a0)                 ;MOVE.L A0,D1
  782.             move.l      IRJtemp_3,2(a0)
  783.             move.w      IRJtemp_4,6(a0)
  784.             move.l      IRJtemp_5,16(a0)
  785.  
  786.             move.l      IRJtemp_6,a0
  787.             move.l      #$12d866fc,(a0)
  788.             move.l      #$12d866fc,12(a0)
  789.  
  790.             move.l      IRJtemp_7,a0
  791.             move.w      IRJtemp_8,(a0)
  792.             move.l      IRJtemp_9,2(a0)
  793.             move.w      IRJtemp_10,6(a0)
  794.  
  795.             nop
  796.             bra         FreeIRJbuffers
  797. UPI.99      rts                                     ;UNKNOWN or not loaded
  798. ;---------------------------------------------------------------------------------------------------
  799. FreeIRJbuffers
  800.             tst.l       IRJ_ImagineTask
  801.             beq         FRJ.05                      ;imagine wasn't ever found
  802.             movea.l     IRJ_ImagineA4Base,a4
  803.             movea.l     IRJ_OBJECTdir,a3            ;IRJobject->IMobject
  804.             move.w      IM_OBJECTdir,d4
  805.             move.l      (a4,d4.w),d0
  806.             bsr         CopyString
  807.             movea.l     IRJ_OBJECTfile,a3
  808.             move.w      IM_OBJECTfile,d4
  809.             move.l      (a4,d4.w),d0
  810.             bsr         CopyString
  811.             movea.l     IRJ_OBJECTdir,a3            ;IRJobject->IMbrowse
  812.             move.w      IM_BROWSEdir,d4
  813.             move.l      (a4,d4.w),d0
  814.             bsr         CopyString
  815.             movea.l     IRJ_OBJECTfile,a3
  816.             move.w      IM_BROWSEfile,d4
  817.             move.l      (a4,d4.w),d0
  818.             bsr         CopyString
  819.             movea.l     IM_BRUSHMAPSdir,a3          ;IMbrushmaps->IMconvertiff
  820.             move.w      IM_CONVERTIFFdir,d4
  821.             move.l      (a4,d4.w),d0
  822.             bsr         CopyString
  823.             movea.l     IM_BRUSHMAPSfile,a3
  824.             move.w      IM_CONVERTIFFfile,d4
  825.             move.l      (a4,d4.w),d0
  826.             bsr         CopyString
  827.             movea.l     IM_BRUSHMAPSdir,a3          ;IMbrushmaps->IMpalette
  828.             move.w      IM_PALETTEdir,d4
  829.             move.l      (a4,d4.w),d0
  830.             bsr         CopyString
  831.             movea.l     IM_BRUSHMAPSfile,a3
  832.             move.w      IM_PALETTEfile,d4
  833.             move.l      (a4,d4.w),d0
  834.             bsr         CopyString
  835. FRJ.05      rts
  836. ;---------------------------------------------------------------------------------------------------
  837. ;---------------------------------------------------------------------------------------------------
  838. PrepDirectoryTableStruct
  839.             movea.l     _AbsExecBase,a6
  840.  
  841.             bsr         PDTSsub1                    ;IRJ_OBJECTdir  IRJ_OBJECTfile
  842.             move.l      d0,IRJ_OBJECTdir            ;IRJ_DXFdir     IRJ_DXFfile
  843.             beq         PDTS.error                  ;IRJ_FORMdir    IRJ_FORMfile
  844.             bsr         PDTSsub2                    ;IRJ_CYCLEdir   IRJ_CYCLEfile
  845.             move.l      d0,IRJ_OBJECTfile           ;IRJ_SPLINEdir  IRJ_SPLINEfile
  846.             beq         PDTS.error
  847.             bsr         PDTSsub1
  848.             move.l      d0,IRJ_DXFdir
  849.             beq         PDTS.error
  850.             bsr         PDTSsub2
  851.             move.l      d0,IRJ_DXFfile
  852.             beq         PDTS.error
  853.             bsr         PDTSsub1
  854.             move.l      d0,IRJ_FORMdir
  855.             beq         PDTS.error
  856.             bsr         PDTSsub2
  857.             move.l      d0,IRJ_FORMfile
  858.             beq         PDTS.error
  859.             bsr         PDTSsub1
  860.             move.l      d0,IRJ_CYCLEdir
  861.             beq         PDTS.error
  862.             bsr         PDTSsub2
  863.             move.l      d0,IRJ_CYCLEfile
  864.             beq         PDTS.error
  865.             bsr         PDTSsub1
  866.             move.l      d0,IRJ_SPLINEdir
  867.             beq         PDTS.error
  868.             bsr         PDTSsub2
  869.             move.l      d0,IRJ_SPLINEfile
  870.             beq         PDTS.error
  871.  
  872.             bsr         PDTSsub1
  873.             move.l      d0,IRJ_PIXdir
  874.             beq         PDTS.error
  875.             bsr         PDTSsub1
  876.             move.l      d0,IRJ_ANIMdir
  877.             beq         PDTS.error
  878.             bsr         PDTSsub1
  879.             move.l      d0,IRJ_tempdir
  880.             beq         PDTS.error
  881.  
  882.             lea         PROJECTdirconfigdefault,a3
  883.             bsr         PDTSsub3
  884.             move.l      d0,IRJ_PROJECTdir_configdefault
  885.             beq         PDTS.error
  886.             lea         PROJECTfileconfigdefault,a3
  887.             bsr         PDTSsub3
  888.             move.l      d0,IRJ_PROJECTfile_configdefault
  889.             beq         PDTS.error
  890.             lea         SUBPROJECTfileconfigdefault,a3
  891.             bsr         PDTSsub3
  892.             move.l      d0,IRJ_SUBPROJECTfile_configdefault
  893.             beq         PDTS.error
  894.             lea         PIXdirconfigdefault,a3
  895.             bsr         PDTSsub3
  896.             move.l      d0,IRJ_PIXdir_configdefault
  897.             beq         PDTS.error
  898.             lea         ANIMdirconfigdefault,a3
  899.             bsr         PDTSsub3
  900.             move.l      d0,IRJ_ANIMdir_configdefault
  901.             beq         PDTS.error
  902.             lea         PREFSfileconfigdefault,a3
  903.             bsr         PDTSsub3
  904.             move.l      d0,IRJ_PREFSfile_configdefault
  905.             beq         PDTS.error
  906.             lea         OBJECTdirconfigdefault,a3
  907.             bsr         PDTSsub3
  908.             move.l      d0,IRJ_OBJECTdir_configdefault
  909.             beq         PDTS.error
  910.             lea         DXFdirconfigdefault,a3
  911.             bsr         PDTSsub3
  912.             move.l      d0,IRJ_DXFdir_configdefault
  913.             beq         PDTS.error
  914.             lea         FORMdirconfigdefault,a3
  915.             bsr         PDTSsub3
  916.             move.l      d0,IRJ_FORMdir_configdefault
  917.             beq         PDTS.error
  918.             lea         CYCLEdirconfigdefault,a3
  919.             bsr         PDTSsub3
  920.             move.l      d0,IRJ_CYCLEdir_configdefault
  921.             beq         PDTS.error
  922.             lea         SPLINEdirconfigdefault,a3
  923.             bsr         PDTSsub3
  924.             move.l      d0,IRJ_SPLINEdir_configdefault
  925.             beq         PDTS.error
  926.             lea         BRUSHMAPSdirconfigdefault,a3
  927.             bsr         PDTSsub3
  928.             move.l      d0,IRJ_BRUSHMAPSdir_configdefault
  929.             beq         PDTS.error
  930.             lea         ATTRIBSdirconfigdefault,a3
  931.             bsr         PDTSsub3
  932.             move.l      d0,IRJ_ATTRIBSdir_configdefault
  933.             beq         PDTS.error
  934.             lea         TEXTURESdirconfigdefault,a3
  935.             bsr         PDTSsub3
  936.             move.l      d0,IRJ_TEXTURESdir_configdefault
  937.             beq         PDTS.error
  938.             lea         EFFECTSdirconfigdefault,a3
  939.             bsr         PDTSsub3
  940.             move.l      d0,IRJ_EFFECTSdir_configdefault
  941.             beq         PDTS.error
  942.             lea         PARTICALSdirconfigdefault,a3
  943.             bsr         PDTSsub3
  944.             move.l      d0,IRJ_PARTICALSdir_configdefault
  945.             beq         PDTS.error
  946.             lea         REXXdirconfigdefault,a3
  947.             bsr         PDTSsub3
  948.             move.l      d0,IRJ_REXXdir_configdefault
  949.             beq         PDTS.error
  950.  
  951.             lea         PROJECTpatconfigdefault,a3
  952.             bsr         PDTSsub3
  953.             move.l      d0,IRJ_PROJECTpat_configdefault
  954.             beq         PDTS.error
  955.             lea         NEWSUBPROJECTpatconfigdefault,a3
  956.             bsr         PDTSsub3
  957.             move.l      d0,IRJ_NEWSUBPROJECTpat_configdefault
  958.             beq         PDTS.error
  959.             lea         OPENSUBPROJECTpatconfigdefault,a3
  960.             bsr         PDTSsub3
  961.             move.l      d0,IRJ_OPENSUBPROJECTpat_configdefault
  962.             beq         PDTS.error
  963.             lea         PREFSpatconfigdefault,a3
  964.             bsr         PDTSsub3
  965.             move.l      d0,IRJ_PREFSpat_configdefault
  966.             beq         PDTS.error
  967.             lea         OBJECTpatconfigdefault,a3
  968.             bsr         PDTSsub3
  969.             move.l      d0,IRJ_OBJECTpat_configdefault
  970.             beq         PDTS.error
  971.             lea         DXFpatconfigdefault,a3
  972.             bsr         PDTSsub3
  973.             move.l      d0,IRJ_DXFpat_configdefault
  974.             beq         PDTS.error
  975.             lea         FORMpatconfigdefault,a3
  976.             bsr         PDTSsub3
  977.             move.l      d0,IRJ_FORMpat_configdefault
  978.             beq         PDTS.error
  979.             lea         CYCLEpatconfigdefault,a3
  980.             bsr         PDTSsub3
  981.             move.l      d0,IRJ_CYCLEpat_configdefault
  982.             beq         PDTS.error
  983.             lea         SPLINEpatconfigdefault,a3
  984.             bsr         PDTSsub3
  985.             move.l      d0,IRJ_SPLINEpat_configdefault
  986.             beq         PDTS.error
  987.             lea         BRUSHMAPSpatconfigdefault,a3
  988.             bsr         PDTSsub3
  989.             move.l      d0,IRJ_BRUSHMAPSpat_configdefault
  990.             beq         PDTS.error
  991.             lea         ATTRIBSpatconfigdefault,a3
  992.             bsr         PDTSsub3
  993.             move.l      d0,IRJ_ATTRIBSpat_configdefault
  994.             beq         PDTS.error
  995.             lea         TEXTURESpatconfigdefault,a3
  996.             bsr         PDTSsub3
  997.             move.l      d0,IRJ_TEXTURESpat_configdefault
  998.             beq         PDTS.error
  999.             lea         EFFECTSpatconfigdefault,a3
  1000.             bsr         PDTSsub3
  1001.             move.l      d0,IRJ_EFFECTSpat_configdefault
  1002.             beq         PDTS.error
  1003.             lea         PARTICALSpatconfigdefault,a3
  1004.             bsr         PDTSsub3
  1005.             move.l      d0,IRJ_PARTICALSpat_configdefault
  1006.             beq         PDTS.error
  1007.             lea         REXXpatconfigdefault,a3
  1008.             bsr         PDTSsub3
  1009.             move.l      d0,IRJ_REXXpat_configdefault
  1010.             beq         PDTS.error
  1011.  
  1012.             move.l      #DIRECTORYTABLESTRUCT,d0   ;no error
  1013.             rts
  1014. PDTS.error  bsr         FreeDirectoryTableStuff
  1015.             move.l      #0,d0   ;memory error
  1016.             rts
  1017.  
  1018. PDTSsub1    move.l      #100,d0  ;dir
  1019.             move.l      #MEMF_CLEAR,d1
  1020.             jsr         _LVOAllocMem(a6)
  1021.             rts
  1022. PDTSsub2    move.l      #30,d0  ;file
  1023.             move.l      #MEMF_CLEAR,d1
  1024.             jsr         _LVOAllocMem(a6)
  1025.             rts
  1026. PDTSsub3    movea.l     a3,a1
  1027.             bsr         SizeOfString
  1028.             movea.l     a1,a3
  1029.             move.l      #MEMF_CLEAR,d1
  1030.             jsr         _LVOAllocMem(a6)
  1031.             move.l      d0,d2
  1032.             beq.s       PDTSs3.01
  1033.             bsr         CopyString
  1034.             move.l      d2,d0
  1035. PDTSs3.01   rts
  1036. ;---------------------------------------------------------------------------------------------------
  1037. FreeDirectoryTableStuff
  1038.             movem.l     a3/a6,-(sp)
  1039.             movea.l     _AbsExecBase,a6
  1040.  
  1041.             move.l      IRJ_OBJECTdir,d0
  1042.             bsr         FDTSsub1
  1043.             move.l      IRJ_OBJECTfile,d0
  1044.             bsr         FDTSsub2
  1045.             move.l      IRJ_DXFdir,d0
  1046.             bsr         FDTSsub1
  1047.             move.l      IRJ_DXFfile,d0
  1048.             bsr         FDTSsub2
  1049.             move.l      IRJ_FORMdir,d0
  1050.             bsr         FDTSsub1
  1051.             move.l      IRJ_FORMfile,d0
  1052.             bsr         FDTSsub2
  1053.             move.l      IRJ_CYCLEdir,d0
  1054.             bsr         FDTSsub1
  1055.             move.l      IRJ_CYCLEfile,d0
  1056.             bsr         FDTSsub2
  1057.             move.l      IRJ_SPLINEdir,d0
  1058.             bsr         FDTSsub1
  1059.             move.l      IRJ_SPLINEfile,d0
  1060.             bsr         FDTSsub2
  1061.  
  1062.             move.l      IRJ_PIXdir,d0
  1063.             bsr         FDTSsub1
  1064.             move.l      IRJ_ANIMdir,d0
  1065.             bsr         FDTSsub1
  1066.             move.l      IRJ_tempdir,d0
  1067.             bsr         FDTSsub1
  1068.  
  1069.             move.l      IRJ_PROJECTdir_configdefault,d0
  1070.             bsr         FDTSsub3
  1071.             move.l      IRJ_PROJECTfile_configdefault,d0
  1072.             bsr         FDTSsub3
  1073.             move.l      IRJ_SUBPROJECTfile_configdefault,d0
  1074.             bsr         FDTSsub3
  1075.             move.l      IRJ_PIXdir_configdefault,d0
  1076.             bsr         FDTSsub3
  1077.             move.l      IRJ_ANIMdir_configdefault,d0
  1078.             bsr         FDTSsub3
  1079.             move.l      IRJ_PREFSfile_configdefault,d0
  1080.             bsr         FDTSsub3
  1081.             move.l      IRJ_OBJECTdir_configdefault,d0
  1082.             bsr         FDTSsub3
  1083.             move.l      IRJ_DXFdir_configdefault,d0
  1084.             bsr         FDTSsub3
  1085.             move.l      IRJ_FORMdir_configdefault,d0
  1086.             bsr         FDTSsub3
  1087.             move.l      IRJ_CYCLEdir_configdefault,d0
  1088.             bsr         FDTSsub3
  1089.             move.l      IRJ_SPLINEdir_configdefault,d0
  1090.             bsr         FDTSsub3
  1091.             move.l      IRJ_BRUSHMAPSdir_configdefault,d0
  1092.             bsr         FDTSsub3
  1093.             move.l      IRJ_ATTRIBSdir_configdefault,d0
  1094.             bsr         FDTSsub3
  1095.             move.l      IRJ_TEXTURESdir_configdefault,d0
  1096.             bsr         FDTSsub3
  1097.             move.l      IRJ_EFFECTSdir_configdefault,d0
  1098.             bsr         FDTSsub3
  1099.             move.l      IRJ_PARTICALSdir_configdefault,d0
  1100.             bsr         FDTSsub3
  1101.             move.l      IRJ_REXXdir_configdefault,d0
  1102.             bsr         FDTSsub3
  1103.             move.l      IRJ_PROJECTpat_configdefault,d0
  1104.             bsr         FDTSsub3
  1105.             move.l      IRJ_NEWSUBPROJECTpat_configdefault,d0
  1106.             bsr         FDTSsub3
  1107.             move.l      IRJ_OPENSUBPROJECTpat_configdefault,d0
  1108.             bsr         FDTSsub3
  1109.             move.l      IRJ_PREFSpat_configdefault,d0
  1110.             bsr         FDTSsub3
  1111.             move.l      IRJ_OBJECTpat_configdefault,d0
  1112.             bsr         FDTSsub3
  1113.             move.l      IRJ_DXFpat_configdefault,d0
  1114.             bsr         FDTSsub3
  1115.             move.l      IRJ_FORMpat_configdefault,d0
  1116.             bsr         FDTSsub3
  1117.             move.l      IRJ_CYCLEpat_configdefault,d0
  1118.             bsr         FDTSsub3
  1119.             move.l      IRJ_SPLINEpat_configdefault,d0
  1120.             bsr         FDTSsub3
  1121.             move.l      IRJ_BRUSHMAPSpat_configdefault,d0
  1122.             bsr         FDTSsub3
  1123.             move.l      IRJ_ATTRIBSpat_configdefault,d0
  1124.             bsr         FDTSsub3
  1125.             move.l      IRJ_TEXTURESpat_configdefault,d0
  1126.             bsr         FDTSsub3
  1127.             move.l      IRJ_EFFECTSpat_configdefault,d0
  1128.             bsr         FDTSsub3
  1129.             move.l      IRJ_PARTICALSpat_configdefault,d0
  1130.             bsr         FDTSsub3
  1131.             move.l      IRJ_REXXpat_configdefault,d0
  1132.             bsr         FDTSsub3
  1133.             movem.l     (sp)+,a3/a6
  1134.             rts
  1135.  
  1136. FDTSsub1    tst.l       d0
  1137.             beq.s       FDTSs1.01
  1138.             movea.l     d0,a1
  1139.             move.l      #100,d0  ;dir
  1140.             jsr         _LVOFreeMem(a6)
  1141. FDTSs1.01   rts
  1142. FDTSsub2    tst.l       d0
  1143.             beq.s       FDTSs2.01
  1144.             movea.l     d0,a1
  1145.             move.l      #30,d0   ;file
  1146.             jsr         _LVOFreeMem(a6)
  1147. FDTSs2.01   rts
  1148. FDTSsub3    tst.l       d0
  1149.             beq.s       FDTSs3.01
  1150.             movea.l     d0,a3
  1151.             movea.l     d0,a1
  1152.             bsr         SizeOfString
  1153.             jsr         _LVOFreeMem(a6)
  1154. FDTSs3.01   rts
  1155. ;---------------------------------------------------------------------------------------------------
  1156. ;---------------------------------------------------------------------------------------------------
  1157. IRJwritethis
  1158.             movem.l     d0-d3/a0-a1/a3/a6,-(sp)
  1159.             tst.l       WBreturnMsg
  1160.             bne.s       WT.05
  1161.             movea.l     DOSlib,a6
  1162.             jsr         _LVOOutput(a6)
  1163.             move.l      d0,d1
  1164.             beq.s       WT.05
  1165.             move.l      a3,d2
  1166.             bsr         SizeOfString
  1167.             move.l      d0,d3
  1168.             jsr         _LVOWrite(a6)
  1169. WT.05       movem.l     (sp)+,d0-d3/a0-a1/a3/a6
  1170.             rts
  1171. ;---------------------------------------------------------------------------------------------------
  1172. ;in:a3  out:d0.l
  1173. SizeOfString
  1174.             clr.l       d0
  1175. SOS.05      addi.w      #1,d0
  1176.             tst.b       (a3)+
  1177.             bne.s       SOS.05
  1178.             rts
  1179. ;---------------------------------------------------------------------------------------------------
  1180. MoveString
  1181. CopyString  movea.l     d0,a0
  1182. CS.05       move.b      (a3)+,d0
  1183.             move.b      d0,(a0)+
  1184.             bne.s       CS.05
  1185.             rts
  1186. ;---------------------------------------------------------------------------------------------------
  1187. CloseLibs   movea.l     _AbsExecBase,a6
  1188.             movea.l     DOSlib,a1
  1189.             jsr         _LVOCloseLibrary(a6)        ;close dos.library
  1190.             movea.l     ASLlib,a1
  1191.             jsr         _LVOCloseLibrary(a6)        ;close asl.library
  1192.             rts
  1193. ;---------------------------------------------------------------------------------------------------
  1194. ;---------------------------------------------------------------------------------------------------
  1195. ;---------------------------------------------------------------------------------------------------
  1196. ;---------------------------------------------------------------------------------------------------
  1197. ;---------------------------------------------------------------------------------------------------
  1198. ;---------------------------------------------------------------------------------------------------
  1199. IRJrequester
  1200.             movem.l     d1-d7/a0-a3/a6,-(sp)
  1201.             movea.l     ASLlib,a6
  1202.             move.l      52(sp),IRJaslfr_imaginewindow
  1203.             move.l      60(sp),IRJaslfr_title       ;title
  1204.             move.l      64(sp),d7                   ;file
  1205.             move.l      68(sp),d6                   ;dir
  1206.  
  1207.             movea.l     IRJaslfr_title,a0
  1208.             cmpi.b      #'!',(a0)                   ;">!< Delete File !" in detail.c:
  1209.             beq         IRJrequester_skip
  1210.  
  1211.             move.w      IM_PROJECTdir,d4
  1212.             cmp.l       (a4,d4.w),d6
  1213.             beq         PROJECTREQUESTER
  1214.             move.w      IM_SUBPROJECTdir,d4
  1215.             cmp.l       (a4,d4.w),d6
  1216.             beq         SUBPROJECTREQUESTER
  1217.             move.w      IM_PREFSdir,d4
  1218.             cmp.l       (a4,d4.w),d6
  1219.             beq         PREFSREQUESTER
  1220.             move.w      IM_CONVERTIFFdir,d4
  1221.             cmp.l       (a4,d4.w),d6
  1222.             beq         CONVERTIFFREQUESTER
  1223.             move.w      IM_PALETTEdir,d4
  1224.             cmp.l       (a4,d4.w),d6
  1225.             beq         PALETTEREQUESTER
  1226.             move.w      IM_PARTICALSdir,d4
  1227.             cmp.l       (a4,d4.w),d6
  1228.             beq         PARTICALSREQUESTER
  1229.             move.w      IM_EFFECTSdir,d4
  1230.             cmp.l       (a4,d4.w),d6
  1231.             beq         EFFECTSREQUESTER
  1232.             move.w      IM_TEXTURESdir,d4
  1233.             cmp.l       (a4,d4.w),d6
  1234.             beq         TEXTUREREQUESTER
  1235.             move.w      IM_ATTRIBSdir,d4
  1236.             cmp.l       (a4,d4.w),d6
  1237.             beq         ATTRIBSREQUESTER
  1238.             move.w      IM_BRUSHMAPSdir,d4
  1239.             cmp.l       (a4,d4.w),d6
  1240.             beq         BRUSHMAPREQUESTER
  1241.             move.w      IM_BROWSEdir,d4
  1242.             cmp.l       (a4,d4.w),d6
  1243.             beq         BROWSEREQUESTER
  1244.             move.w      IM_OBJECTdir,d4
  1245.             cmp.l       (a4,d4.w),d6
  1246.             beq         OBJECTREQUESTER
  1247.  
  1248.             cmpi.l      #5,IRJ_ImagineVersion
  1249.             bne.s       IRJrequester_skip
  1250.             move.w      IM_REXXdir,d4
  1251.             cmp.l       (a4,d4.w),d6           ;is imaginerexx?, then test
  1252.             beq         REXXREQUESTER
  1253.  
  1254. IRJrequester_skip:
  1255.             movem.l     (sp)+,d1-d7/a0-a3/a6
  1256.             dc.w        $4ef9                       ;JMP
  1257. IRJrequester_orig:
  1258.             dc.l        IRJrequester                ;this gets overwritten by PatchImagine
  1259.             nop
  1260.             nop
  1261. ;---------------------------------------------------------------------------------------------------
  1262. ;---------------------------------------------------------------------------------------------------
  1263. PARTICALSREQUESTER
  1264.             tst.l       IRJ_PARTICALSdir_configdefault+4    ;configflag
  1265.             beq.s       PAR.05                              ;nope, leave it
  1266.             movea.l     IRJ_PARTICALSdir_configdefault,a1
  1267.             movea.l     d6,a0
  1268.             bsr         EXPANDconfigdefault
  1269.  
  1270. PAR.05      move.l      IRJ_PARTICALSpat_configdefault,d5
  1271.             move.w      IM_PARTICALSoutput,d4
  1272.             move.l      (a4,d4.w),d4
  1273.  
  1274.             bsr         GetDirFile                          ;output = IM_PARTICALSoutput(a4)
  1275.             tst.l       d0
  1276.             beq.s       PAR_DONE                            ;cancel/error
  1277.  
  1278.             bsr         SplitDirFile
  1279.  
  1280.             move.l      #0,IRJ_PARTICALSdir_configdefault+4
  1281.             moveq       #1,d0
  1282. ;-----------
  1283. PAR_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1284.             rts
  1285. ;---------------------------------------------------------------------------
  1286. ;---------------------------------------------------------------------------
  1287. TEXTUREREQUESTER
  1288.             tst.l       IRJ_TEXTURESdir_configdefault+4     ;configflag
  1289.             beq.s       TEX.05                              ;nope, leave it
  1290.             movea.l     IRJ_TEXTURESdir_configdefault,a1
  1291.             movea.l     d6,a0
  1292.             bsr         EXPANDconfigdefault
  1293.  
  1294. TEX.05      move.l      IRJ_TEXTURESpat_configdefault,d5
  1295.             move.w      IM_TEXTURESoutput,d4
  1296.             move.l      (a4,d4.w),d4
  1297.  
  1298.             bsr         GetDirFile                          ;output = IM_TEXTURESoutput(a4)
  1299.             tst.l       d0
  1300.             bne.s       TEX.10
  1301.             movea.l     d7,a2                               ;file
  1302.             move.b      #0,(a2)
  1303.             bra.s       TEX_DONE                            ;cancel/error
  1304.  
  1305. TEX.10      movea.l     d4,a2                               ;_output
  1306. TEX.15      tst.b       (a2)+                               ;if exists, chop off '.itx'
  1307.             bne.s       TEX.15
  1308.             cmpi.l      #'.itx',-5(a2)
  1309.             bne.s       TEX.20
  1310.             move.b      #0,-5(a2)
  1311.  
  1312. TEX.20      bsr         SplitDirFile
  1313.  
  1314.             move.l      #0,IRJ_TEXTURESdir_configdefault+4
  1315.             moveq       #1,d0
  1316. ;-----------
  1317. TEX_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1318.             rts
  1319. ;---------------------------------------------------------------------------
  1320. ;---------------------------------------------------------------------------
  1321. EFFECTSREQUESTER
  1322.             tst.l       IRJ_EFFECTSdir_configdefault+4      ;configflag
  1323.             beq.s       EFX.05                              ;nope, leave it
  1324.             movea.l     IRJ_EFFECTSdir_configdefault,a1
  1325.             movea.l     d6,a0
  1326.             bsr         EXPANDconfigdefault
  1327.  
  1328. EFX.05      move.l      IRJ_EFFECTSpat_configdefault,d5
  1329.             move.w      IM_EFFECTSoutput,d4
  1330.             move.l      (a4,d4.w),d4
  1331.  
  1332.             bsr         GetDirFile                          ;output = IM_EFFECTSoutput(a4)
  1333.             tst.l       d0
  1334.             beq.s       EFX_DONE                            ;cancel/error
  1335.  
  1336.             movea.l     d4,a2                               ;_output
  1337. EFX.10      tst.b       (a2)+                               ;if exists, chop off '.ifx'
  1338.             bne.s       EFX.10
  1339.             cmpi.l      #'.ifx',-5(a2)
  1340.             bne.s       EFX.15
  1341.             move.b      #0,-5(a2)
  1342.  
  1343. EFX.15      bsr         SplitDirFile
  1344.  
  1345.             move.l      #0,IRJ_EFFECTSdir_configdefault+4
  1346.             moveq       #1,d0
  1347. ;-----------
  1348. EFX_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1349.             rts
  1350. ;---------------------------------------------------------------------------
  1351. ;---------------------------------------------------------------------------
  1352. ATTRIBSREQUESTER
  1353.             tst.l       IRJ_ATTRIBSdir_configdefault+4      ;configflag
  1354.             beq.s       ATR.05                              ;nope, leave it
  1355.             movea.l     IRJ_ATTRIBSdir_configdefault,a1
  1356.             movea.l     d6,a0
  1357.             bsr         EXPANDconfigdefault
  1358.  
  1359. ATR.05      move.l      IRJ_ATTRIBSpat_configdefault,d5
  1360.             move.w      IM_ATTRIBSoutput,d4
  1361.             move.l      (a4,d4.w),d4
  1362.  
  1363.             bsr         GetDirFile                          ;output = IM_ATTRIBSoutput(a4)
  1364.             tst.l       d0
  1365.             beq.s       ATR_DONE                            ;cancel/error
  1366.  
  1367.             bsr         SplitDirFile
  1368.  
  1369.             move.l      #0,IRJ_ATTRIBSdir_configdefault+4
  1370.             moveq       #1,d0
  1371. ;-----------
  1372. ATR_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1373.             rts
  1374. ;---------------------------------------------------------------------------
  1375. ;---------------------------------------------------------------------------
  1376. CONVERTIFFREQUESTER
  1377.             tst.l       IRJ_BRUSHMAPSdir_configdefault+4    ;configflag
  1378.             beq.s       IFF.05                              ;nope, leave it
  1379.             movea.l     IRJ_BRUSHMAPSdir_configdefault,a1
  1380.             move.w      IM_BRUSHMAPSdir,d4
  1381.             movea.l     (a4,d4.w),a0
  1382.             bsr         EXPANDconfigdefault
  1383.  
  1384. IFF.05      move.w      IM_BRUSHMAPSfile,d4
  1385.             move.l      (a4,d4.w),d7
  1386.             move.w      IM_BRUSHMAPSdir,d4
  1387.             move.l      (a4,d4.w),d6
  1388.             move.l      IRJ_BRUSHMAPSpat_configdefault,d5
  1389.             move.w      IM_CONVERTIFFoutput,d4
  1390.             move.l      (a4,d4.w),d4                        ;convertiff
  1391.  
  1392.             bsr         GetDirFile
  1393.             tst.l       d0
  1394.             beq.s       IFF_DONE                            ;cancel/error
  1395.  
  1396.             bsr         SplitDirFile
  1397.  
  1398.             movea.l     d4,a3                               ;copy IM_CONVERTIFFoutput to IM_BRUSHMAPSoutput
  1399.             move.w      IM_BRUSHMAPSoutput,d4
  1400.             move.l      (a4,d4.w),d0
  1401.             bsr         CopyString
  1402.  
  1403.             move.l      #0,IRJ_BRUSHMAPSdir_configdefault+4
  1404.             moveq       #1,d0
  1405. ;-----------
  1406. IFF_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1407.             rts
  1408. ;---------------------------------------------------------------------------
  1409. ;---------------------------------------------------------------------------
  1410. PALETTEREQUESTER
  1411.             tst.l       IRJ_BRUSHMAPSdir_configdefault+4    ;configflag
  1412.             beq.s       PAL.05                              ;nope, leave it
  1413.             movea.l     IRJ_BRUSHMAPSdir_configdefault,a1
  1414.             move.w      IM_BRUSHMAPSdir,d4
  1415.             movea.l     (a4,d4.w),a0
  1416.             bsr         EXPANDconfigdefault
  1417.  
  1418. PAL.05      move.w      IM_BRUSHMAPSfile,d4
  1419.             move.l      (a4,d4.w),d7
  1420.             move.w      IM_BRUSHMAPSdir,d4
  1421.             move.l      (a4,d4.w),d6
  1422.             move.l      IRJ_BRUSHMAPSpat_configdefault,d5
  1423.             move.w      IM_PALETTEoutput,d4
  1424.             move.l      (a4,d4.w),d4                        ;generate with loaded palette
  1425.  
  1426.             bsr         GetDirFile
  1427.             tst.l       d0
  1428.             beq.s       PAL_DONE                            ;cancel/error
  1429.  
  1430.             bsr         SplitDirFile
  1431.  
  1432.             movea.l     d4,a3                               ;copy IM_PALETTEoutput to IM_BRUSHMAPSoutput
  1433.             move.w      IM_BRUSHMAPSoutput,d4
  1434.             move.l      (a4,d4.w),d0
  1435.             bsr         CopyString
  1436.  
  1437.             move.l      #0,IRJ_BRUSHMAPSdir_configdefault+4
  1438.             moveq       #1,d0
  1439. ;-----------
  1440. PAL_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1441.             rts
  1442. ;---------------------------------------------------------------------------
  1443. ;---------------------------------------------------------------------------
  1444. BRUSHMAPREQUESTER
  1445.             tst.l       IRJ_BRUSHMAPSdir_configdefault+4    ;configflag
  1446.             beq.s       BRU.05                              ;nope, leave it
  1447.             movea.l     IRJ_BRUSHMAPSdir_configdefault,a1
  1448.             movea.l     d6,a0
  1449.             bsr         EXPANDconfigdefault
  1450.  
  1451. BRU.05      move.l      IRJ_BRUSHMAPSpat_configdefault,d5
  1452.             move.w      IM_BRUSHMAPSoutput,d4
  1453.             move.l      (a4,d4.w),d4                        ;applique/addbrushmap
  1454.  
  1455.             bsr         GetDirFile
  1456.             tst.l       d0
  1457.             beq.s       BRU_DONE                            ;cancel/error
  1458.  
  1459.             bsr         SplitDirFile
  1460.  
  1461.             move.l      #0,IRJ_BRUSHMAPSdir_configdefault+4
  1462.             moveq       #1,d0
  1463. ;-----------
  1464. BRU_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1465.             rts
  1466. ;---------------------------------------------------------------------------
  1467. ;---------------------------------------------------------------------------
  1468. PREFSREQUESTER
  1469.             tst.l       IRJ_PREFSfile_configdefault+4
  1470.             bne.s       PRF.05                              ;ok, stick _configdef in there
  1471.             move.w      IM_PREFSoutput,d4
  1472.             movea.l     (a4,d4.w),a1
  1473.             tst.b       (a1)
  1474.             bne.s       PRF.15
  1475.  
  1476. PRF.05      move.l      IRJ_PREFSfile_configdefault,d1
  1477.             move.l      d1,d6                               ;dir
  1478.             movea.l     DOSlib,a6
  1479.             jsr         _LVOFilePart(a6)
  1480.             movea.l     ASLlib,a6
  1481.             move.l      d0,d7                               ;file
  1482.             cmp.l       d6,d7
  1483.             beq.s       PRF.10                              ;dir only, file=null
  1484.  
  1485.             movea.l     d0,a3
  1486.             cmpi.b      #':',-1(a3) ;- can still cause trouble. ie ram:test.cfg
  1487.             bne.s       PRF.08
  1488.             movea.l     a3,a0
  1489.             lea         IRJ_tempfilespace,a1
  1490.             move.l      a1,d7
  1491. PRF.06      move.b      (a0)+,(a1)+
  1492.             bne.s       PRF.06
  1493.             adda.w      #1,a3
  1494.  
  1495. PRF.08      move.b      -1(a3),IRJtemp_11                   ;temp
  1496.             move.b      #0,-1(a3)                           ;temp
  1497.             move.l      IRJ_PREFSpat_configdefault,d5
  1498.             move.w      IM_PREFSoutput,d4
  1499.             move.l      (a4,d4.w),d4
  1500.  
  1501.             bsr         GetDirFile
  1502.  
  1503.             move.b      IRJtemp_11,-1(a3)                   ;restore temp
  1504.             bra.s       PRF.20
  1505. ;-----------
  1506. PRF.10      move.l      #nullstring,d6
  1507. PRF.15      move.l      IRJ_PREFSpat_configdefault,d5
  1508.             move.w      IM_PREFSoutput,d4
  1509.             move.l      (a4,d4.w),d4
  1510.  
  1511.             bsr         GetDirFile
  1512. ;-----------
  1513. PRF.20      tst.l       d0
  1514.             beq         PRF_DONE                            ;cancel/error
  1515.  
  1516.             move.w      IM_PREFSfile,d7
  1517.             move.l      (a4,d7.w),d7
  1518.             move.w      IM_PREFSdir,d6
  1519.             move.l      (a4,d6.w),d6
  1520.  
  1521.             bsr         SplitDirFile
  1522.  
  1523.             movea.l     IRJaslfr_title,a0
  1524.             cmpi.b      #'S',13(a0)                         ;"Config File (>S<ave)"
  1525.             beq.s       PRF.25
  1526.  
  1527.             movea.l     d4,a1                               ;_output
  1528.             move.l      #DIRECTORYTABLESTRUCT,d5
  1529.             move.l      #1,DTSconfigflag                    ;flag new configdefaults as updated - same flag as when updated by another IRJ
  1530.             bsr         CONFIG_read
  1531.  
  1532. PRF.25      move.l      #0,IRJ_PREFSfile_configdefault+4    ;clear this flag
  1533.             moveq       #1,d0
  1534.             bra.s       PRF_DONE
  1535. ;-----------
  1536. PRF_unknown move.l      #0,d0
  1537. PRF_DONE    move.l      d0,d1
  1538.             movem.l     (sp)+,d1-d7/a0-a3/a6
  1539.             rts
  1540. ;---------------------------------------------------------------------------
  1541. ;---------------------------------------------------------------------------
  1542. PROJECTREQUESTER
  1543.             movea.l     IRJaslfr_title,a0
  1544.             cmpi.b      #'N',14(a0)                         ;"Project Name (>N<ew)"
  1545.             beq.s       NEWPROJECT
  1546.             bra         OPENPROJECT
  1547. ;---------------------------------------------------
  1548. NEWPROJECT
  1549.             tst.l       IRJ_PROJECTdir_configdefault+4
  1550.             beq.s       NPr.10
  1551. NPr.05      movea.l     IRJ_PROJECTdir_configdefault,a0
  1552.             bra.s       NPr.15
  1553.  
  1554. NPr.10      movea.l     d6,a0
  1555.             tst.b       (a0)
  1556.             beq.s       NPr.05
  1557. NPr.15      move.l      a0,d6
  1558.             tst.l       IRJ_PROJECTfile_configdefault+4
  1559.             beq.s       NPr.25
  1560. NPr.20      movea.l     IRJ_PROJECTfile_configdefault,a0
  1561.             bra.s       NPr.30
  1562. NPr.25      movea.l     d7,a0
  1563.             tst.b       (a0)
  1564.             beq.s       NPr.20
  1565.             lea         nullstring,a0                       ;clear file field
  1566. NPr.30      move.l      a0,d7
  1567.             move.l      IRJ_PROJECTpat_configdefault,d5
  1568.             move.w      IM_PROJECToutput,d4
  1569.             move.l      (a4,d4.w),d4
  1570.  
  1571.             bsr         GetDirFile
  1572.             tst.l       d0
  1573.             beq         PR_DONE                             ;cancel/error - should maybe have not cleared the IRJxxx_configflags unless this succeeds
  1574.  
  1575.             movea.l     d4,a2                               ;_output
  1576. NPr.35      tst.b       (a2)+                               ;if exists, chop off '.imp'
  1577.             bne.s       NPr.35
  1578.             cmpi.l      #'.imp',-5(a2)
  1579.             bne.s       NPr.40
  1580.             move.b      #0,-5(a2)
  1581.             move.w      IM_PROJECTfile,d0
  1582.             movea.l     (a4,d0.w),a2                       ;not so sure this is necessary, but why take chances
  1583. NPr.37      tst.b       (a2)+
  1584.             bne.s       NPr.37
  1585.             cmpi.l      #'.imp',-5(a2)
  1586.             bne.s       NPr.40
  1587.             move.b      #0,-5(a2)
  1588.  
  1589. NPr.40      move.w      IM_PROJECTdir,d6
  1590.             move.l      (a4,d6.w),d6
  1591.             move.w      IM_PROJECTfile,d7
  1592.             move.l      (a4,d7.w),d7
  1593.  
  1594.             bsr         SplitDirFile
  1595.  
  1596.             bsr         INITdirs
  1597.  
  1598.             move.l      #0,IRJ_PROJECTdir_configdefault+4
  1599.             move.l      #0,IRJ_PROJECTfile_configdefault+4
  1600.             move.l      #1,d0                               ;signal success
  1601.             bra         PR_DONE
  1602. ;-----------
  1603. OPENPROJECT
  1604.             tst.l       IRJ_PROJECTdir_configdefault+4
  1605.             beq.s       OPr.10
  1606. OPr.05      movea.l     IRJ_PROJECTdir_configdefault,a0
  1607.             bra.s       OPr.15
  1608. OPr.10      movea.l     d6,a0
  1609.             tst.b       (a0)
  1610.             beq.s       OPr.05
  1611. OPr.15      move.l      a0,d6                               ;dir
  1612.             tst.l       IRJ_PROJECTfile_configdefault+4
  1613.             beq.s       OPr.25
  1614.             move.l      #0,IRJ_PROJECTfile_configdefault+4
  1615.             movea.l     IRJ_PROJECTfile_configdefault,a0    ;default file
  1616.             tst.b       (a0)
  1617.             beq.s       OPr.25
  1618.  
  1619.             movea.l     d6,a3
  1620.             move.l      IRJ_tempdir,d0
  1621.             bsr         CopyString                          ;copy from d6 to tempdir
  1622.             move.l      IRJ_tempdir,d1
  1623.             move.l      IRJ_PROJECTfile_configdefault,d2
  1624.             move.l      #100,d3
  1625.             movea.l     DOSlib,a6
  1626.             jsr         _LVOAddPart(a6)
  1627.             movea.l     ASLlib,a6
  1628.             move.l      IRJ_tempdir,d6                      ;dir
  1629.             movea.l     d6,a0
  1630. OPr.20      tst.b       (a0)+
  1631.             bne.s       OPr.20
  1632.             move.l      #'.imp',-1(a0)
  1633.             move.b      #0,3(a0)
  1634.  
  1635. OPr.25      move.l      #stagingname,d7
  1636.             move.l      IRJ_PROJECTpat_configdefault,d5
  1637.             move.w      IM_PROJECToutput,d4
  1638.             move.l      (a4,d4.w),d4
  1639.  
  1640.             bsr         GetDirFile
  1641.             tst.l       d0
  1642.             beq         PR_DONE                             ;cancel/error
  1643.  
  1644.             movea.l     d4,a2                               ;_output
  1645. OPr.30      tst.b       (a2)+                               ;if exists, chop off '.imp'
  1646.             bne.s       OPr.30
  1647.             cmpi.l      #'.imp',-13(a2)                     ;don't check to make sure they didn't change staging name
  1648.             bne.s       OPr.35
  1649.             move.b      #0,-13(a2)
  1650.  
  1651. OPr.35      move.w      IM_PROJECTdir,d6
  1652.             move.l      (a4,d6.w),d6
  1653.             move.w      IM_PROJECTfile,d7
  1654.             move.l      (a4,d7.w),d7
  1655.  
  1656.             bsr         SplitDirFile
  1657.  
  1658.             bsr         INITdirs
  1659.  
  1660.             move.l      #0,IRJ_PROJECTdir_configdefault+4
  1661.             move.l      #1,d0                               ;signal success
  1662. ;-----------
  1663. PR_DONE     movem.l     (sp)+,d1-d7/a0-a3/a6
  1664.             rts
  1665. ;---------------------------------------------------------------------------
  1666. ;---------------------------------------------------------------------------
  1667. SUBPROJECTREQUESTER
  1668.             cmpi.l      #$26,d0
  1669.             beq         NEWSUBPROJECT
  1670.             cmpi.l      #$106,d0
  1671.             beq         OPENSUBPROJECT
  1672. ;---------------------------------------------------
  1673. NEWSUBPROJECT
  1674.             cmpi.l      #3,IRJ_ImagineVersion
  1675.             beq         NSp.005
  1676.             tst.l       IRJ_RENDER40_configdefault+4
  1677.             beq.s       NSp.005
  1678.             move.w      IM_RENDER40,d0
  1679.             move.b      IRJ_RENDER40_configdefault+3,(a4,d0.w)
  1680.             move.l      #0,IRJ_RENDER40_configdefault+4
  1681. NSp.005     tst.l       IRJ_RENDER_configdefault+4
  1682.             beq.s       NSp.010
  1683.             move.w      IM_RENDER,d0
  1684.             move.b      IRJ_RENDER_configdefault+3,(a4,d0.w)
  1685.             move.l      #0,IRJ_RENDER_configdefault+4
  1686. NSp.010     tst.l       IRJ_FILEformat_configdefault+4
  1687.             beq.s       NSp.015
  1688.             move.w      IM_FILEformat,d0
  1689.             move.b      IRJ_FILEformat_configdefault+3,(a4,d0.w)
  1690.             move.l      #0,IRJ_FILEformat_configdefault+4
  1691. NSp.015     tst.l       IRJ_WIDTH_configdefault+4
  1692.             beq.s       NSp.020
  1693.             move.w      IM_WIDTH,d0
  1694.             move.w      IRJ_WIDTH_configdefault+2,(a4,d0.w)
  1695.             move.l      #0,IRJ_WIDTH_configdefault+4
  1696. NSp.020     tst.l       IRJ_HEIGHT_configdefault+4
  1697.             beq.s       NSp.025
  1698.             move.w      IM_HEIGHT,d0
  1699.             move.w      IRJ_HEIGHT_configdefault+2,(a4,d0.w)
  1700.             move.l      #0,IRJ_HEIGHT_configdefault+4
  1701. NSp.025     tst.l       IRJ_XASPECT_configdefault+4
  1702.             beq.s       NSp.030
  1703.             move.w      IM_XASPECT,d0
  1704.             move.w      IRJ_XASPECT_configdefault+2,(a4,d0.w)
  1705.             move.l      #0,IRJ_XASPECT_configdefault+4
  1706. NSp.030     tst.l       IRJ_YASPECT_configdefault+4
  1707.             beq.s       NSp.035
  1708.             move.w      IM_YASPECT,d0
  1709.             move.w      IRJ_YASPECT_configdefault+2,(a4,d0.w)
  1710.             move.l      #0,IRJ_YASPECT_configdefault+4
  1711. NSp.035     tst.l       IRJ_VIEWmode_configdefault+4
  1712.             beq.s       NSp.040
  1713.             move.w      IM_VIEWmode,d0
  1714.             move.l      IRJ_VIEWmode_configdefault,(a4,d0.w)
  1715.             move.l      #0,IRJ_VIEWmode_configdefault+4
  1716.  
  1717. NSp.040     tst.l       IRJ_SUBPROJECTfile_configdefault+4
  1718.             beq.s       NSp.050
  1719. NSp.045     movea.l     IRJ_SUBPROJECTfile_configdefault,a0
  1720.             bra.s       NSp.055
  1721. NSp.050     movea.l     d7,a0
  1722.             tst.b       (a0)
  1723.             beq.s       NSp.045
  1724.             lea         nullstring,a0               ;clear file field
  1725. NSp.055     move.l      a0,d7
  1726.             move.l      IRJ_NEWSUBPROJECTpat_configdefault,d5
  1727.             move.w      IM_SUBPROJECToutput,d4
  1728.             move.l      (a4,d4.w),d4
  1729.  
  1730.             bsr         GetDirFile
  1731.             tst.l       d0
  1732.             beq         SPR_DONE                    ;cancel/error
  1733.  
  1734.             movea.l     d4,a2                       ;_output
  1735. NSp.060     tst.b       (a2)+                       ;if exists, chop off '.pix'
  1736.             bne.s       NSp.060
  1737.             cmpi.l      #'.pix',-5(a2)
  1738.             bne.s       NSp.065
  1739.             move.b      #0,-5(a2)
  1740.  
  1741. NSp.065     move.l      d4,d1                       ;_output
  1742.             movea.l     DOSlib,a6
  1743.             jsr         _LVOFilePart(a6)
  1744.             movea.l     ASLlib,a6
  1745.             movea.l     d0,a0
  1746.             move.w      IM_SUBPROJECTfile,d0
  1747.             movea.l     (a4,d0.w),a1                ;IM_SUBPROJECTdir must remain unchanged
  1748. NSp.070     move.b      (a0)+,(a1)+
  1749.             bne.s       NSp.070
  1750.  
  1751.             move.w      IM_SUBPROJECTpixdir,d4
  1752.             lea         (a4,d4.w),a1                ;Imagine pix directory
  1753.             movea.l     IRJ_PIXdir_configdefault,a0
  1754.             tst.b       (a0)
  1755.             beq.s       NSp.080 ;nope, use ProjName/SubProj (.pix)
  1756. NSp.075     move.b      (a0)+,(a1)+
  1757.             bne.s       NSp.075
  1758.             bra.s       NSp.090
  1759. NSp.080     move.w      IM_SUBPROJECToutput,d4
  1760.             movea.l     (a4,d4.w),a0
  1761. NSp.085     move.b      (a0)+,(a1)+
  1762.             bne.s       NSp.085
  1763.             move.l      #'.pix',-1(a1)
  1764.             move.b      #0,3(a1)
  1765. NSp.090     move.w      IM_SUBPROJECTanimdir,d4
  1766.             lea         (a4,d4.w),a1                ;Imagine anim directory
  1767.             movea.l     IRJ_ANIMdir_configdefault,a0
  1768.             tst.b       (a0)
  1769.             beq.s       NSp.100 ;nope, use ProjName/SubProj (.anim)
  1770. NSp.095     move.b      (a0)+,(a1)+
  1771.             bne.s       NSp.095
  1772.             bra.s       NSp.110
  1773. NSp.100     move.w      IM_SUBPROJECToutput,d4
  1774.             movea.l     (a4,d4.w),a0
  1775. NSp.105     move.b      (a0)+,(a1)+
  1776.             bne.s       NSp.105
  1777.             move.l      #'.ani',-1(a1)
  1778.             move.w      #$6d00,3(a1)     ;'m',0
  1779.  
  1780. NSp.110     move.l      #0,IRJ_SUBPROJECTfile_configdefault+4
  1781.             move.l      #0,IRJ_PIXdir_configdefault+4
  1782.             move.l      #0,IRJ_ANIMdir_configdefault+4
  1783.             move.l      #1,d0                       ;signal success
  1784.             bra         SPR_DONE
  1785. ;-----------
  1786. OPENSUBPROJECT
  1787.             move.w      IM_SUBPROJECTdir,d4
  1788.             move.l      (a4,d4.w),d6
  1789.  
  1790.             tst.l       IRJ_SUBPROJECTfile_configdefault+4
  1791.             beq.s       OSp.010
  1792.             move.l      #0,IRJ_SUBPROJECTfile_configdefault+4
  1793.             move.l      d6,d1  ;dir
  1794.             move.l      IRJ_SUBPROJECTfile_configdefault,a0   ;default file
  1795.             tst.b       (a0)
  1796.             beq.s       OSp.010
  1797.             move.l      a0,d2
  1798.             move.l      #100,d3
  1799.             movea.l     DOSlib,a6
  1800.             jsr         _LVOAddPart(a6)
  1801.             movea.l     ASLlib,a6
  1802.             movea.l     d6,a0
  1803. OSp.005     tst.b       (a0)+
  1804.             bne.s       OSp.005
  1805.             cmpi.l      #'.pix',-5(a0)              ;make sure it doesn't already end with .pix
  1806.             beq.s       OSp.010
  1807.             move.l      #'.pix',-1(a0)
  1808.             move.b      #0,3(a0)
  1809. OSp.010     move.l      #specsname,d7
  1810.             move.l      IRJ_OPENSUBPROJECTpat_configdefault,d5
  1811.             move.w      IM_SUBPROJECToutput,d4
  1812.             move.l      (a4,d4.w),d4
  1813.  
  1814.             bsr         GetDirFile
  1815.             move.w      IM_SUBPROJECTdir,d4         ;repair the damage done before GDF to SUBPROJECT dir
  1816.             move.l      (a4,d4.w),a2
  1817.             tst.b       (a2)
  1818.             beq.s       OSp.014
  1819. OSp.012     tst.b       (a2)+
  1820.             bne.s       OSp.012
  1821.             suba.w      #1,a2
  1822. OSp.013     move.b      -(a2),d4
  1823.             cmpi.b      #'/',d4
  1824.             bne.s       OSp.013
  1825.             cmpi.l      #'.imp',-4(a2)
  1826.             bne.s       OSp.014
  1827.             move.b      #0,(a2)
  1828. OSp.014     tst.l       d0
  1829.             beq         SPR_DONE                    ;GDF cancel/error - should maybe have not cleared the IRJxxx_configflags unless this succeeds
  1830.  
  1831.             move.w      IM_SUBPROJECToutput,d4
  1832.             movea.l     (a4,d4.w),a2                ;_output
  1833. OSp.015     tst.b       (a2)+                       ;if exists, chop off '.pix/specs'
  1834.             bne.s       OSp.015
  1835.             cmpi.l      #'.pix',-11(a2)             ;don't check to make sure they didn't change staging name
  1836.             bne.s       OSp.020   ;oy - cancel out
  1837.             move.b      #0,-11(a2)
  1838.  
  1839. OSp.020     move.w      IM_SUBPROJECToutput,d4
  1840.             move.l      (a4,d4.w),d1                ;_output
  1841.             movea.l     DOSlib,a6
  1842.             jsr         _LVOFilePart(a6)
  1843.             movea.l     d0,a0
  1844.             move.w      IM_SUBPROJECTfile,d4
  1845.             movea.l     (a4,d4.w),a1
  1846. OSp.025     move.b      (a0)+,(a1)+
  1847.             bne.s       OSp.025
  1848.  
  1849.             move.l      #0,IRJ_SUBPROJECTfile_configdefault+4
  1850.             move.l      #1,d0                       ;signal success
  1851.             bra.s       SPR_DONE
  1852. ;-----------
  1853. SPR_unknown move.l      #0,d0
  1854. SPR_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1855.             rts
  1856. ;---------------------------------------------------------------------------
  1857. ;---------------------------------------------------------------------------
  1858. BROWSEREQUESTER
  1859.             cmpi.b      #$00,d3
  1860.             beq         BRO.05                      ;OBJECTinfo
  1861.             bra         BRO.30                      ;BACKDROPbrushmap / GLOBALbrushmap
  1862. ;---------------------------------------------------
  1863. BRO.05      tst.l       IRJ_OBJECTdir_configdefault+4   ;configflag
  1864.             beq.s       BRO.10                      ;nope, leave it
  1865.             movea.l     IRJ_OBJECTdir_configdefault,a1
  1866.             movea.l     IRJ_OBJECTdir,a0
  1867.             bsr         EXPANDconfigdefault
  1868. BRO.10      move.l      IRJ_OBJECTfile,d7  ;file
  1869.             move.l      IRJ_OBJECTdir,d6   ;dir
  1870.             move.l      IRJ_OBJECTpat_configdefault,d5
  1871.             move.w      IM_OBJECToutput,d4
  1872.             move.l      (a4,d4.w),d4
  1873.  
  1874.             bsr         GetDirFile                  ;placed in OBJECT_output
  1875.             tst.l       d0
  1876.             beq         BRO_DONE                    ;cancel/error
  1877.  
  1878.             move.l      IRJ_OBJECTdir,d6            ;dir
  1879.             move.l      IRJ_OBJECTfile,d7           ;file
  1880.  
  1881.             bsr         SplitDirFile
  1882.  
  1883.             movea.l     IRJ_OBJECTdir,a3
  1884.             move.w      IM_BROWSEdir,d4
  1885.             move.l      (a4,d4.w),d0
  1886.             jsr         CopyString
  1887.             movea.l     IRJ_OBJECTfile,a3
  1888.             move.w      IM_BROWSEfile,d4
  1889.             move.l      (a4,d4.w),d0
  1890.             jsr         CopyString
  1891.  
  1892.             move.w      IM_OBJECToutput,d4
  1893.             movea.l     (a4,d4.w),a3                ;copy IM_objectoutput to IM_BROZoutput
  1894.             move.w      IM_BROWSEoutput,d4
  1895.             move.l      (a4,d4.w),d0
  1896.             bsr         CopyString
  1897.  
  1898.             move.l      #0,IRJ_OBJECTdir_configdefault+4
  1899.             moveq       #1,d0
  1900.             bra         BRO_DONE
  1901. ;-----------
  1902. BRO.30      tst.l       IRJ_BRUSHMAPSdir_configdefault+4   ;configflag
  1903.             beq.s       BRO.35                      ;nope, leave it
  1904.             movea.l     IRJ_BRUSHMAPSdir_configdefault,a1
  1905.             move.w      IM_BRUSHMAPSdir,d4
  1906.             movea.l     (a4,d4.w),a0
  1907.             bsr         EXPANDconfigdefault
  1908. BRO.35      move.w      IM_BRUSHMAPSfile,d4
  1909.             move.l      (a4,d4.w),d7                ;file
  1910.             move.w      IM_BRUSHMAPSdir,d4
  1911.             move.l      (a4,d4.w),d6                ;dir
  1912.             move.l      IRJ_BRUSHMAPSpat_configdefault,d5
  1913.             move.w      IM_BRUSHMAPSoutput,d4
  1914.  
  1915.             bsr         GetDirFile                  ;placed in BRSHMAP_output
  1916.             tst.l       d0
  1917.             beq.s       BRO_DONE                    ;cancel/error
  1918.  
  1919.             move.w      IM_BRUSHMAPSdir,d6
  1920.             move.l      (a4,d6.w),d6                ;dir
  1921.             move.w      IM_BRUSHMAPSfile,d7
  1922.             move.l      (a4,d7.w),d7                ;file
  1923.  
  1924.             bsr         SplitDirFile
  1925.  
  1926.             move.w      IM_BRUSHMAPSdir,d4
  1927.             movea.l     (a4,d4.w),a3
  1928.             move.w      IM_BROWSEdir,d4
  1929.             move.l      (a4,d4.w),d0
  1930.             jsr         CopyString
  1931.             move.w      IM_BRUSHMAPSfile,d4
  1932.             movea.l     (a4,d4.w),a3
  1933.             move.w      IM_BROWSEfile,d4
  1934.             move.l      (a4,d4.w),d0
  1935.             jsr         CopyString
  1936.  
  1937.             move.w      IM_BRUSHMAPSoutput,d4
  1938.             movea.l     (a4,d4.w),a3                ;copy IM_BRUSHMAPSoutput to IM_BROWSEoutput
  1939.             move.w      IM_BROWSEoutput,d4
  1940.             move.l      (a4,d4.w),d0
  1941.             bsr         CopyString
  1942.  
  1943.             move.l      #0,IRJ_BRUSHMAPSdir_configdefault+4
  1944.             moveq       #1,d0
  1945.             bra.s       BRO_DONE
  1946. ;-----------
  1947. BRO_unknown move.l      #0,d0
  1948. BRO_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  1949.             rts
  1950. ;---------------------------------------------------------------------------
  1951. ;---------------------------------------------------------------------------
  1952. OBJECTREQUESTER
  1953.             cmpi.l      #3,IRJ_ImagineVersion
  1954.             beq         LOADSAVE30
  1955.             cmpi.l      #4,IRJ_ImagineVersion
  1956.             beq         LOADSAVE40
  1957.             cmpi.l      #5,IRJ_ImagineVersion
  1958.             beq         LOADSAVE50
  1959.             bra         LSR_unknown
  1960. ;---------------------------------------------------------------------------
  1961. LOADSAVE30
  1962.             move.l      156(a7),d0
  1963.             sub.l       IRJ_ImagineCodeBase,d0
  1964.  
  1965.             cmpi.l      #$64000,d0
  1966.             blt         LSR.025
  1967.  
  1968.             cmpi.l      #$79000,d0
  1969.             blt         LSR.045
  1970.  
  1971.             cmpi.l      #$7cd00,d0
  1972.             blt         LSR.055
  1973.  
  1974.             cmpi.l      #$7e000,d0
  1975.             blt         LSR.025
  1976.  
  1977.             cmpi.l      #$80200,d0
  1978.             blt         LSR.065
  1979.  
  1980.             cmpi.l      #$80b00,d0
  1981.             blt         LSR.025
  1982.  
  1983.             cmpi.l      #$82000,d0
  1984.             blt         LSR.065
  1985.  
  1986.             cmpi.l      #$85000,d0
  1987.             blt         LSR.025
  1988.  
  1989.             cmpi.l      #$b0000,d0
  1990.             blt         LSR.065
  1991.  
  1992.             bra         LSR_unknown
  1993. ;---------------------------------------------------------------------------
  1994. LOADSAVE40
  1995.             move.l      160(a7),d0
  1996.             sub.l       IRJ_ImagineCodeBase,d0
  1997.  
  1998.             cmpi.l      #$64000,d0
  1999.             blt         LSR.025
  2000.  
  2001.             cmpi.l      #$8e000,d0
  2002.             blt         LSR.045
  2003.  
  2004.             cmpi.l      #$8e900,d0
  2005.             blt         LSR.055
  2006.  
  2007.             cmpi.l      #$8f000,d0
  2008.             blt         LSR.025
  2009.  
  2010.             cmpi.l      #$92000,d0
  2011.             blt         LSR.065
  2012.             cmpi.l      #$92c00,d0
  2013.             blt         LSR.025
  2014.             cmpi.l      #$93800,d0
  2015.             blt         LSR.065
  2016.             cmpi.l      #$98000,d0
  2017.             blt         LSR.025
  2018.  
  2019.             cmpi.l      #$b1000,d0
  2020.             blt         LSR.035
  2021.  
  2022.             cmpi.l      #$ce000,d0
  2023.             blt         LSR.065
  2024.  
  2025.             bra         LSR_unknown
  2026. ;---------------------------------------------------------------------------
  2027. LOADSAVE50
  2028.             move.l      160(a7),d0
  2029.             sub.l       IRJ_ImagineCodeBase,d0
  2030.  
  2031.             cmpi.l      #$64000,d0
  2032.             blt         LSR.025
  2033.  
  2034.             cmpi.l      #$8e000,d0
  2035.             blt         LSR.045
  2036.  
  2037.             cmpi.l      #$92f00,d0
  2038.             blt         LSR.055
  2039.  
  2040.             cmpi.l      #$93800,d0
  2041.             blt         LSR.025
  2042.  
  2043.             cmpi.l      #$96b00,d0
  2044.             blt         LSR.065
  2045.             cmpi.l      #$97800,d0
  2046.             blt         LSR.025
  2047.             cmpi.l      #$98400,d0
  2048.             blt         LSR.065
  2049.             cmpi.l      #$9d000,d0
  2050.             blt         LSR.025
  2051.  
  2052.             cmpi.l      #$b7000,d0
  2053.             blt         LSR.035
  2054.  
  2055.             cmpi.l      #$d4000,d0
  2056.             blt         LSR.065
  2057.  
  2058.             bra         LSR_unknown
  2059. ;---------------------------------------------------
  2060. ;---------------------------------------------------
  2061. LSR.025     tst.l       IRJ_OBJECTdir_configdefault+4 ;configflag
  2062.             beq.s       LSR.030                     ;nope, leave it
  2063.             movea.l     IRJ_OBJECTdir_configdefault,a1
  2064.             movea.l     IRJ_OBJECTdir,a0
  2065.             bsr         EXPANDconfigdefault
  2066.             move.l      #0,IRJ_OBJECTdir_configdefault+4
  2067. LSR.030     move.l      IRJ_OBJECTfile,d7
  2068.             move.l      IRJ_OBJECTdir,d6
  2069.             move.l      IRJ_OBJECTpat_configdefault,d5
  2070.             bra         LOADSAVE
  2071. ;-----
  2072. LSR.035     tst.l       IRJ_DXFdir_configdefault+4  ;configflag
  2073.             beq.s       LSR.040                     ;nope, leave it
  2074.             movea.l     IRJ_DXFdir_configdefault,a1
  2075.             movea.l     IRJ_DXFdir,a0
  2076.             bsr         EXPANDconfigdefault
  2077.             move.l      #0,IRJ_DXFdir_configdefault+4
  2078. LSR.040     move.l      IRJ_DXFfile,d7
  2079.             move.l      IRJ_DXFdir,d6
  2080.             move.l      IRJ_DXFpat_configdefault,d5
  2081.             bra         LOADSAVE
  2082. ;-----
  2083. LSR.045     tst.l       IRJ_FORMdir_configdefault+4 ;configflag
  2084.             beq.s       LSR.050                     ;nope, leave it
  2085.             movea.l     IRJ_FORMdir_configdefault,a1
  2086.             movea.l     IRJ_FORMdir,a0
  2087.             bsr         EXPANDconfigdefault
  2088.             move.l      #0,IRJ_FORMdir_configdefault+4
  2089. LSR.050     move.l      IRJ_FORMfile,d7
  2090.             move.l      IRJ_FORMdir,d6
  2091.             move.l      IRJ_FORMpat_configdefault,d5
  2092.             bra         LOADSAVE
  2093. ;-----
  2094. LSR.055     tst.l       IRJ_CYCLEdir_configdefault+4 ;configflag
  2095.             beq.s       LSR.060                     ;nope, leave it
  2096.             movea.l     IRJ_CYCLEdir_configdefault,a1
  2097.             movea.l     IRJ_CYCLEdir,a0
  2098.             bsr         EXPANDconfigdefault
  2099.             move.l      #0,IRJ_CYCLEdir_configdefault+4
  2100. LSR.060     move.l      IRJ_CYCLEfile,d7
  2101.             move.l      IRJ_CYCLEdir,d6
  2102.             move.l      IRJ_CYCLEpat_configdefault,d5
  2103.             bra         LOADSAVE
  2104. ;-----
  2105. LSR.065     tst.l       IRJ_SPLINEdir_configdefault+4 ;configflag
  2106.             beq.s       LSR.070                     ;nope, leave it
  2107.             movea.l     IRJ_SPLINEdir_configdefault,a1
  2108.             movea.l     IRJ_SPLINEdir,a0
  2109.             bsr         EXPANDconfigdefault
  2110.             move.l      #0,IRJ_SPLINEdir_configdefault+4
  2111. LSR.070     move.l      IRJ_SPLINEfile,d7
  2112.             move.l      IRJ_SPLINEdir,d6
  2113.             move.l      IRJ_SPLINEpat_configdefault,d5
  2114.             bra         LOADSAVE
  2115. ;---------------------------------------------------
  2116. LOADSAVE    move.w      IM_OBJECToutput,d4
  2117.  
  2118.             bsr         GetDirFile                  ;output = IM_OBJECToutput(a4)
  2119.             tst.l       d0
  2120.             beq         LSR_DONE                    ;cancel/error
  2121.  
  2122.             bsr         SplitDirFile                ;back into d6&d7
  2123.  
  2124.             movea.l     d6,a1
  2125.             move.w      IM_OBJECTdir,d6
  2126.             movea.l     (a4,d6.w),a2
  2127. LS.05       move.b      (a1)+,(a2)+
  2128.             bne.s       LS.05
  2129.             movea.l     d7,a1
  2130.             move.w      IM_OBJECTfile,d7
  2131.             movea.l     (a4,d7.w),a2
  2132. LS.10       move.b      (a1)+,(a2)+
  2133.             bne.s       LS.10
  2134.  
  2135.             moveq       #1,d0
  2136.             bra.s       LSR_DONE
  2137. ;----------
  2138. LSR_unknown 
  2139.             movem.l     d0-d1/d7/a0-a1/a6,-(sp)
  2140.             move.l      d0,d7
  2141.             movea.l     _AbsExecBase,a6
  2142.             jsr         _LVOAlert(a6)
  2143.             movem.l     (sp)+,d0-d1/d7/a0-a1/a6
  2144.  
  2145.             move.l      #0,d0
  2146. LSR_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  2147.             rts
  2148. ;---------------------------------------------------------------------------
  2149. ;---------------------------------------------------------------------------
  2150. REXXREQUESTER
  2151.             tst.l       IRJ_REXXdir_configdefault+4         ;configflag
  2152.             beq.s       REX.05                              ;nope, leave it
  2153.             movea.l     IRJ_REXXdir_configdefault,a1
  2154.             move.w      IM_REXXdir,d4
  2155.             movea.l     (a4,d4.w),a0
  2156.             bsr         EXPANDconfigdefault
  2157.  
  2158. REX.05      move.w      IM_REXXfile,d4
  2159.             move.l      (a4,d4.w),d7
  2160.             move.w      IM_REXXdir,d4
  2161.             move.l      (a4,d4.w),d6
  2162.             move.l      IRJ_REXXpat_configdefault,d5
  2163.             move.w      IM_REXXoutput,d4
  2164.             move.l      (a4,d4.w),d4
  2165.  
  2166.             bsr         GetDirFile
  2167.             tst.l       d0
  2168.             beq.s       REX_DONE                            ;cancel/error
  2169.  
  2170.             bsr         SplitDirFile
  2171.  
  2172.             move.l      #0,IRJ_REXXdir_configdefault+4
  2173.             moveq       #1,d0
  2174. ;-----------
  2175. REX_DONE    movem.l     (sp)+,d1-d7/a0-a3/a6
  2176.             rts
  2177. ;---------------------------------------------------------------------------
  2178. ;---------------------------------------------------------------------------
  2179.